Como identificar un palíndromo en C++

Lo primero que tendríamos que hacer sería quitar los espacios de nuestra cadena. Luego ir comparando, el primer caracter con el último, el segundo con el penúltimo, etc. Si todos los caracteres coinciden, es palíndromo, si no, pues no.

#include<string.h>
#include<iostream>
using namespace std;

int main()
{
  char cadena[50],cadenaf[50]={0},*parte;
  int c,len,pal=0;
  cout<<"Introduce un palíndromo: "; cin.getline(cadena,50,'n');

  parte=strtok(cadena," ");                  //
  strcat(cadenaf,parte);                    // quita los espacios de 'cadena' y
  while((parte=strtok(NULL," ")) != NULL)  // guarda el resultado en 'cadenaf'
    strcat(cadenaf,parte);                //

  len=strlen(cadenaf);
  for(c=0;c<=len-1;c++)
  {
    if(cadenaf[len-1-c]==cadenaf[c]) // comparación del primer caracter con el
      pal++;                        // último, el segundo con el penúltimo, etc
  }
  if(pal==len) // si todos las caracteres coinciden, sí es palíndromo
    cout<<"Sí es palíndromo!";
  else
    cout<<"No es palíndromo";
  cin.get();
}
/*Creado por THEbatzuk*/

13 thoughts on “Como identificar un palíndromo en C++

  1. excelente el post pero tengo una pregunta…estoy apenas comenzando a utilizar C++ y tengo que hacer un pequeño programa que me muestre exactamente esto…si es palindromo o no…pero el inconveniente es que tengo que inserta varias cadenas de caracteres a un array y luego escoger alguna posición del array y verificar si es o no palindromo…aparte tengo que eliminar de la lista cualquier elemento..!! Si me puedes ayudar te lo agradecería un montón..!!

  2. De esta forma me parece más fácil:

    #include
    #include

    int main(void)
    {
    int i, v;
    char text[80];

    printf(“Ingrese un texto: “); gets(text);

    for(i=0; i<=strlen(text)/2; i++)
    {
    if(text[i] == text[strlen(text)-1-i])
    v=1;
    else
    {
    v=0;
    break;
    }
    }
    if(v == 1)
    printf("nNo es palindromo.n");
    else
    printf("nSi es palindromo.n");

    return 0;
    }

  3. AYUDENME NECSECITO UN PROGRAMA CON TODAS LAS VARIABLES TAMBIIEN EL USO DE IF DE SWITCH EL USO DE FOR INT Y FLOAT TAMBIEN EL USO DE ARREGLOS Y DE MENUS DESPLEGADOS CON GOTOXY UUURRRRGGGEEENNNTTTEEE😦

  4. hola necesito ayuda con un programa q lea hasta 10 cantidades desde el teclado y las represente como una grafica de barras.. me urgee espero puedan ayudarme grax (Y)

  5. hola quiero que me ayude con un programa que me muestre en pantalla si es palindromo o no pero digamos anitalavalatina es un palindomo pero lo que quiero es q m elimine las palabras q no m sirva y q solo m muestre anitalavalatina
    digamos anitalavalatinaensucasa lo q quiero es q m muestre solo anitalavalatina. sin todo lo demas un ejemplo porfavor

  6. Help me!🙂
    //Programa que decide si una frase es o no un palindromo, es decir, si se lee igual de derecha a izq que de izq a derecha
    #include
    using namespace std;
    main()
    { char cad[30];
    char cop[30];
    int cont=1;
    bool pal = true;
    for(int i=0; i<30;i++)
    { cad[i]='';
    cop[i]='';
    }
    cout<<"ingrese una cadena de texto: ";
    cin.getline(cad,30);
    for(int i=0; i<30;i++)
    { if(cad[i]!=''&& cad[i]!='' )
    { cont ++;
    cop[cont]=cad[i];
    }
    }
    for (int i=0; i<30;i++)
    {if (cop[i] ==cop[cont -i])
    { pal=false;}
    }
    if(pal)
    { cout<<"la cadena "<< cad<< endl<<" es un palindromo"<<endl;
    }
    else
    {cout<<"la cadena no es un palindromo"<<endl;}
    system("pause");
    return 0;
    }

  7. hola oye tengo este programa pero no funciona y no se donde esta mi error por favor podrias ayudarme:
    #include
    #include
    #include
    #include
    int main()
    { int i=0,contador=0,longi,
    d=1,y=0;
    char x[50],x1[50];

    while (d!=0)
    {
    printf(“nn ¿ES PALINDROMO O NO? “);
    printf(“nn Ingrese cadena: “);
    fgets(x,50,stdin);
    longi = strlen(x);
    while(x[i] != ”)
    { x[i] =tolower(x[i]); //primero convierto todo a minusculas
    i++;
    }
    for (i=0;i<longi;i++)
    {if(x[i]!=32) //elimino los espacios y lo guaro en x1
    {x1[y]=x[i];
    y++;
    }
    }
    for(i=0;i<longi;i++)
    { if(x1[(longi-1)-i]== x1[i]) //comparo el final con el inicio
    {contador++;
    }
    }
    if(contador == longi)//si todas las comparaciones son iguales
    {printf("nn Es palindromo");}
    else
    {printf("nn No es palindromo");}
    getchar();
    getchar();
    system("cls");
    }
    return 0;
    }

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s