PALINDROME

Publicado por Thiago 07/04/2006

[ Hits: 11.620 ]

Download palindrome.c




Este pequeno programa verifica se uma string de no máximo 50 caracteres é palíndrome ou não.
Palíndrome é a palavra que quando lida de frente para trás e de trás para frente tem a mesma senquência de caracteres.
Ex: ARARA
Sugestões serão bem vindas.

  



Esconder código-fonte

/**************************
 Programa: palindrome.c
 Autor: thiagoamm
 Data: 02/04/06
***************************/

/* Bibliotecas */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* Cabecalho de funcoes e sub-rotinas */
void verifica(char *str, int tam, int *cond);

/* Funcao principal */
int main(void)
{   
  char string[50],continua;
  int condicao,tamanho;  
  
  do
  {      
    condicao = 1;
    printf("\nInforme a palavra a ser verificada: ");      
    fflush(stdin);
    fgets(string,50,stdin);     
  
    /* Tamanho da string meno o '{FONTE}' */
    tamanho = strlen(string) - 1;
    printf("\n --> Tamanho da string: %i\n",tamanho);
  
    /* Invocando sub-rotina */
    verifica(string,tamanho,&condicao);
  
    if (condicao != 0)
      printf("\n\n--> PALINDROME \n\n");
        
    printf("\nDeseja continuar (s/n) ?  ");    
    fflush(stdin);
    continua = getchar();
    
  } while (continua == 's' || continua == 'S');

  printf("\n\n");
  return(0);   
}

/*
  **********************
   Sub-rotina verifica
  **********************
  
  Responsavel por verificar se uma string e palindrome.
  Uma string e palindrome quando tem a mesma sequencia
 de caracteres lida em ordem natural e em ordem inversa.
  A logica desenvolvida consiste em dividir a string ao meio,
 e utilizar dois contadores para indexa-la. O primeiro contador
 percorre a string do inicio ate sua metade. O segundo contador
 a percorre do fim ate sua metade. Sao comparadas as posicoes 
 indexadas pelo primeiro e segundo contador e caso alguma seja
 diferente o laco (estrutura de repeticao) e imediatamente interrompido.
*/
   
   
void verifica(char *str, int tam,int *cond)
{ 
  int i,j,metade_str; 
  j = tam - 1;
  metade_str = (tam - 1) / 2;
    
  for (i = 0; i <= metade_str; i++, j--)
  {      
    /* Comparacao para strings de tres caracteres ou mais */            
    if (str[i] != str[j])
    {
      *cond = 0;  
      break;
    }             
  }
}

Scripts recomendados

EXEMPLO DA ULTILIZAÇÃO DE PONTEIROS

Administraçao de um teatro

Manipulação de datas

Jogo da forca

Usando a biblioteca readline


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts