y segun mi logica deberia de funcionar el mio tambien, ya probe y probe e hice varios cambios, pero nada.
Bien, en primera un PALINDROMO es una palabra, oracion o frace que se lee exactamente igual si se escribe alreves, ejemplos: oso, somos, reconocer, anita lava la tina, etc.
ahora, lo primero que hice es que opte por quitarle los espacios a la cadena introducida, de ahi, recorria el arreglo de inicio a fin y de fin a inicio simultaneamente, comparando cada caracter (suponiendo que no hay acentos y todas son minusculas) y me queda el programita asi:
Código:
#include <stdio.h> int fun (char cad[]) { int i,j,k=0,flag=0; char cadaux[50]; i=0; j=0; while(cad[i]!='\0') { if(cad[i]!=' ') { cadaux[j]=cad[i]; j++; } i++; } cadaux[j]='\0'; i=0; while(i<=(j/2)&&flag==0) { for(k=j-1;k>=(j/2);k--) if(cadaux[i]!=cadaux[k]) flag=1; i++; } if (flag==1) return 1; else return 0; } main () { char cade[50]; printf("Dame una cadena sea o no Palindroma\n"); gets(cade); if (!fun(cade)) printf("Es PALINDROMO\n\n"); else printf ("NO es un palindromo\n\n"); }
Ese de arriba es mi codigo, sin embargo la parte seleccionada si la cambias por el codigo de abajo si funciona, pero PORQUE?! si segun mi logica ambos hacen exactamente lo mismo
Código:
cadaux[j] = '\0'; k = j - 1; i = 0; while((k >= i) && flag == 0) { if(cadaux[i] != cadaux[k]) flag = 1; i++; k--; }
me gustaria que me dijeran cual es el error logico en mi codigo o en mi funcion
MUCHAS GRACIAS