PALINDROME

Publicado por Thiago 07/04/2006

[ Hits: 11.518 ]

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

Structs dinâmicos com UNION

Visualizador hexadecimal

Cálculo do fatorial

vetor01.c (programa que envolve vetor, simples)

Média das idades


  

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