Ir ao conteúdo

Posts recomendados

Postado

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);
}

Postado

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;
}

Postado

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.

  • 4 anos depois...
Postado

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);
   }  
} 

 

Postado

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/

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...