sábado, 7 de maio de 2011

Frase palindrome em C

Um palíndromo é uma palavra ou um número que se lê da mesma maneira nos dois sentidos, normalmente, da esquerda para a direita e ao  contrário.
COMO SABER SE UMA FRASE É PALINDROME EM C?
Exemplos:
ANOTARAM A DATA DA MARATONA


ASSIM A AIA IA A MISSA


A DIVA EM ARGEL ALEGRA-ME A VIDA


*eliminando os espaços


se você pesquisar mais no google irá achar várias outra.


dai surge a dúvida, como fazer que meu computador verificar se elas são ou não palindromes?
Simples, basta programar, A VIDA ES'TA NA ARTE DE PROGRAMAR! 
kkkk


caso o usuário queria usar os comandos de entrada e saída (cin e cout) basta acrescentar a biblioteca
#include <iostream>
using namespace std; 



#include <iostream>//bibliotecas
#include <stdio.h>


void main()//função main- principal função do programa
{
char str[50];//string
int j, y, num=1;//declaração de inteiros
while(num){//inicia o laço para o usuario executar o programa quantas vezes desejar
system("cls");//limpa a tela
y=0;//atribui valores para as variaveis
j=0;
printf ("\nDigite a frase que desejar\n");
fflush(stdin);//limpa o buffer
gets_s(str);//recebe a string
j = strlen(str)-1;//j e o tamanho da string - 1
for(int i = 0; i < j         ; i++, j--){//laço for para percorrer a string
if(str[i] == ' ' || str[i] == '-')//elimina espaços e traços 
i++;
if(str[j] == ' ' || str[j] == '-')//elimina espaços e traços
j--;
if(str[i] != str[j]){//compara as posiçoes
y = 1;//caso for diferente as letras nas posiçoes y armazena 1
}
}
if(y == 0)// se y continuar com 0 a frase e palindroma 
printf("\nA frase e palindroma\n");
else// caso nao continue com 0 a frase nao e mais palindroma
printf("\nA frase nao e palindroma:\n");
printf("Digite 1 para continuar");
scanf("%d",&num);
if(num != 1)
break;
}//fim do laço while
}

Resolvendo com funçao recursiva

#include <conio.h>
#include <stdio.h>
#include <string.h>


int palindromo (char * str, int i, int j );
int main()
{
char frase[20];
int n, i=0;
printf("digite a da frase\n");
gets_s(frase);
n= strlen(frase)-1;
if(palindromo (frase,i, n)== 1)
printf("\nA frase e palindrome");
else
printf("\nA frase nao e palindrome");
getch();
return 0;
}
int palindromo (char *str, int i, int j )
{
if(*(str+i)== ' ' || *(str+i)== '-' || *(str+i)== '.')
i++;
if(*(str+j)== ' '|| *(str+j)== '-' || *(str+j)== '.')
j--;
if(i >= j )
return 1;
else 
{
if(*(str+i) == *(str+j))
return palindromo( str, i+1, j-1);


else
return 0;//caso a frase nao por palindrome a funçao retorna 0
}
}




Quem curtiu, da um up ai!

Nenhum comentário:

Postar um comentário