Palindromo en c++ diferente...ayuuuda =D

=D, soy nuevo y me dejaron como examen en c++ un programa que detecte
si una palabra es un palindromo pero con una estructura como esta:
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main(void){
clrscr();
char palabra[20], palabra2[20];
int contador,tamano,contador2,contador3;
contador=0;
contador3=0;
printf("Introdce la frase\n");
scanf("%s",&palabra);
tamano=strlen(palabra);
contador2=tamano-1;
printf("%d ",tamano);
gotoxy(1,4);
while(contador<tamano){
printf("%c \n",palabra[contador]);
contador ++;
}
while (contador3<=tamano-1){
printf ("%c \n",palabra[contador2]);
palabra2[contador3]=palabra[contador2];
contador3++;
contador2--;
}
contador=0;
printf("%s\n",palabra2);
if(palabra[contador]==palabra2[contador]){
printf("la palabra es palindromo");
}
else {
printf("la palabra no es palindromo");
}
getch();
return 0;
}
El problema es que solo hace la comparación con la primera (o ultima según la variable) letra de la cadena...
Ayuda y muchas gracias, espero ser un miembro activo de esta comunidad =D

1 Respuesta

Respuesta
1
Hay un problema conceptual. Cuando haces el array de caracteres y después le dices:
palabra2[contador3]=palabra[contador2];
Le estás diciendo que en la posición "contador3" va el carácter de la posición "contador2" de la palabra que tecleó el usuario. Hasta ahí bien, porque creo que el juego de punteros está bien hecho...
Pero luego cuando comparas con el if, le estás diciendo que compare el carácter "contador" de ambas palabras. ¡Claro que sólo compara uno! ¡Es lo que le pides! Prueba con un conversor de array de caracteres a String y luego haz el if para igualar las palabras...
Otra opción que tienes es hacer un único bucle while que recorra la palabra desde el inicio hasta la mitad + 1 y que vaya comparando el primer y el último carácter. El segundo y el penúltimo... y si en algún momento no es igual, que salga y diga que no lo es. Si llega al final es que es un palíndromo...
Muchas gracias por tu respuesta! =D, tarde un poco en verla, pero igual me fui muy útil, eres muy amable, gracias por tomar el tiempo para ayudarme

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas