Programación General > C/C++

 palindromo

(1/2) > >>

haddad:
que mas muchachos! aqui les dejo un codigo que imprime si la palabra ingresada es palindrome o no,  tiene algunos errores, como que no tiene en cuenta cuando una palabra no es par o cuando se repite una letra en la mitad.
recibo sugerencias
saludos!


--- Código: C++ ---#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h> int main(int argc, char *argv[]){char cad[30];int n=0, cont=0; printf("introduzca una palabran");gets(cad); n=strlen(cad)/2; for(int x=0;x<n;x++){        for(int y=strlen(cad)-1;y>=n;y--){                if(cad[x]==cad[y]){                 cont++;                }                }        }  if(cont==n)  {             printf("es palindromen");               }                            else             {             printf("no es palindromen");             }  getch();  return 0;}  

ssaammuu:
Lo podrías simplificar un poquito también

--- Código: C --- #include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h> int main(int argc, char *argv[]){    char cad[30];    int n=0, cont=0;     printf("introduzca una palabran");    gets(cad);     n=strlen(cad);     bool pal=true;    for(int x=0;x<n/2;x++)    if (cad[x]!=cad[n-x-1]) pal=false;     if(pal)printf("es palindromen");    else printf("no es palindromen");     getch();    return 0;}  

haddad:
ok, gracias
podrias explicarme teoricamente en que consiste if (cad[x]!=cad[n-x-1])
saludos

ssaammuu:

--- Código: C --- bool pal=true;  Empezamos asumiendo que la palabra es un palíndromo


--- Código: C --- for(int x=0;x<n/2;x++)if (cad[x]!=cad[n-x-1]) pal=false;  comparamos cada caracter desde 0 hasta la mitad con la posición equivalente empezando desde el final de la cadena  y si no son iguales decimos que la palabra no es un pilíndromo.

Es decir, toma por ejemplo "reconocer"
n/2=4.5 -> 4 porque n es int
pal=true;
[empieza bucle]
x=0  [r]econocer == reconoce[r]
x=1  r[e]conocer == reconoc[e]r
x=2  re[c]onocer == recono[c]er
x=3  rec[o]nocer == recon[o]cer
x=4 == n/2  -> termina bucle
resultado: si es palíndromo

haddad:
si, eso lo tengo claro. solo que al introducir palabras como aleteetela, me dice q no es palindromo :/

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa