Ir ao conteúdo
  • Cadastre-se

String Palindromo


EDSONKOMBAT

Posts recomendados

Boa Noite .

gostaria de uma ajuda estou implementando um programa que verifica se um palavra digitada pelo usuário é um palíndromo(Palavras ou numeros que são iguais mesmo sendo lidos de trás para frente) exibindo uma mensagem de verificação. Ainda tem que considerar palavras com quantidades de caracteres par ou impar . Até agora estou parado no codigo está assim:


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//Verifica se uma string é um Políndromo.
int main()
{
int i = 0, cont = 0, j = 0;
char dados[50], invertido[50];
printf("Digite a sequ%cncia:\n\n", 136);
gets(dados);
while (dados[i] != '\0')
{
cont++;
i++;
}
printf("\n\nOrdem inversa:\n\n");
for(i = cont; i >= 0; i--)
{
if (dados[i] != '\0')
{
printf("%c", dados[i]);
invertido[j] = dados[i];
j++;
}
}
invertido [j] = '\0';
if(strcmp(dados, invertido) == 0)
{
printf("\n\nPal%cndromo!\n\n", 161);
}
else
{
printf("\n\nN%co %c um pal%cndromo!\n\n", 198, 130, 161);
}
printf("\n\n");
system("pause");
return(0);
}

Link para o comentário
Compartilhar em outros sites

Seu codigo ta funcionando, qual o problema?

Separe seu codigo em funções como no exemplo abaixo

int isPalindro(const char *str); // 1 verdadeiro e 0 false

int main()
{
char palavra[50];
gets(palavra);

printf("\n%d", isPalindro(palavra));


getchar();

return 0;
}

int isPalindro(const char *str)
{
size_t len = strlen(str);

for (int i = 0, j = len -1; i < j; i++, j--)
if (str[i] != str[j])
return 0;

return 1;
}

Link para o comentário
Compartilhar em outros sites

Neste seu programa que está funcionando muito bem até aqui, só te dá a opção de digitar apenas uma palavra,

para digitar mais palavras, recomendo que você use um laço for como no exemplo abaixo e armazene num Vetor ou Matriz, veja:


const int Palavras = 5;
char matriz [5] [30];
printf ("\nDigite uma palavra para a posicao ");
for ( i = 0; i < Palavras; i++ ){
printf ("%d: ", i + 1 );
gets ( matriz [i] );fflush (stdin);
}

E para contar os caracteres use a função strlen(); da biblioteca string.h, que é muito fácil de usar,

ela retorna o tamanho da string, e sabendo-se do tamanho da string fica fácil imprementar um trecho

de código para dizer se é par ou ímpar; espero te-lo ajudado.

ABRAÇOS

Link para o comentário
Compartilhar em outros sites

E por que o seguinte esse algoritmo foi me passado para ver se uma string é um políndromo, mas possui uma observação que é Cosidere palavras com quantidade de caracteres pares e impares. Então queria ajuda para entender o que essa observação desse enunciado quer dizer eu não entendi.

Link para o comentário
Compartilhar em outros sites

Acho que deve ser isto, se a palavra tem 5 caracteres é Ímpar

se tem 6 caracteres é Par. Tem também palavras em posição Ímpar e posição Par

Neste caso as palavras foram armazenadas em Vetor, sendo assim, posição 1 = Ímpar,

e posição 2 = par, posição 3 = Ímpar e posição 4 = Par, e assim em diante.

Más acho que a explicação melhor virá da pessoa que te passou o código.

Link para o comentário
Compartilhar em outros sites

  • 4 anos depois...

Eae meu mano eu dei uma otimizada no seu codigo e mudei o nome de algumas variaveis !!! Toma ai 

 

#include <stdio.h>
#include <stdlib.h> 
#include<string.h>
int main()
{ 
   char nome[30],name[30]; 
   int i=0,j=0,tam;   
   printf("Digite uma palavra:\n"); 
   gets(nome);  
   tam=strlen(nome);
   while (nome != '\0')
   {
    i++;
   }
   printf("\n\nOrdem inversa:\n\n");
   for(i = tam-1; i >= 0; i--,j++) 
   {
   printf("%c", nome);
   name[j] = nome;  
   } 
   name [j] = '\0';
   if(strcmp(nome,name)==0) {
       printf("\n\n A palavra %s e palindromo\n\n",name); 
   } 
   else{
           printf("\n\n A palavra %s nao e palindromo\n\n",name);
   }  
} 

 

Link para o comentário
Compartilhar em outros sites

Só uma pequena observação, evite o uso da função gets, não é uma função segura de usar, existe vários problemas em usar essa função, o maior problema é o de estouro de buffers, quando for nesse caso prefira o uso da função fgets:

char saida[50];

fgets(saida, sizeof(saida), stdin); // Em vez de usar a função sizeof, poderia colocar diretamente o tamanho(50)

http://rberaldo.com.br/c-por-que-usar-fgets-em-vez-de-gets/

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...