palindromo

Iniciado por ALONSOQ, 13 Julio 2012, 12:47 PM

0 Miembros y 1 Visitante están viendo este tema.

durasno

Citar
Si no eliminases los espacios, oraciones como "dabale arroz a la zorra el abad" no se cosiderarian palindromos, siendo que si se consideran como tal... o tampoco seria un palindromo el famoso "a man a plan a canal panama", que incluso hay programadores que han trabajado con este ultimo para extenderlo todo lo posible.
:) ya entendi... Saludos
Ahorrate una pregunta, lee el man

dato000

Cita de: bemone en 14 Julio 2012, 05:30 AM
Lo acabo de hacer recien en el comentario y no lo probe, fijate si anda.

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main(int argc, char *argv[])
{
string str, str2;
cin >> str;

size_t pos = str.find_first_of(" ");
while(pos != string::npos){
str.erase(pos);
pos = str.find_first_of(" ");
}

str2 = str.substr(0, str.length());
reverse(str.begin(), str.end());

if(str2 == str)
cout << "La frase '"<<str<<"' es palindroma." <<endl;
else
cout << "La frase '"<<str<<"' no es palindroma." <<endl;

system("pause");
       return EXIT_SUCCESS;
}


ummm funciona con palabras más no con frases.



ALONSOQ

Hola he retomado este tema y he encontrado este código, que de una manera facil y entendible para los que somos principaiantes, dice si una palabra es o no palindromo. Pero me surge la siguiente duda de principante, en el bucle for termina con ';' ( en los codigos que yo he hecho hasta ahora no se termina con ';') y si se elimina, aunque el programa compila y ejecuta, no funciona correctamente ¿ por que?

muchas gracias

int longitud;
int inicio=0, fin;   
   

void palindromo (char palin[]);
char palin[30];
main()
{
palindromo(palin);
getch();
}

void palindromo (char palin[])
{
   
     printf("dime una palabra:");
     gets (palin);
    longitud = strlen(palin);
   

     for(fin=longitud-1; palin[fin]==palin[inicio] && fin>=0; inicio++,fin--);
     
         if (inicio==longitud)
         {
            printf( "Es palindromo");
         } 
         else
         {
            printf( "no es palindromo"); 
         }   
     
     
}


fary

Mucho más simple


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char Palabra[100];
int i,len;

memset(Palabra,0,100);

printf("Introduce la palabra: ");
scanf("%s",&Palabra);

len = strlen(Palabra);

for (i=0;i!=len;i++)
{
if (Palabra[i] != Palabra[len-i-1]) break;
}

if (i==len) printf("Palindroma\n");
else printf("No es palindroma\n");

system("PAUSE");
return 0;
}
Un byte a la izquierda.

ALONSOQ

Muchas gracias por tu respuesta

por cierto que significa memset(Palabra,0,100);?

gracias

fary

Cita de: ALONSOQ en  7 Agosto 2012, 17:34 PM
Muchas gracias por tu respuesta

por cierto que significa memset(Palabra,0,100);?

gracias

Llena el buffer Palabra con bytes nulos.

http://www.cplusplus.com/reference/clibrary/cstring/memset/

Un byte a la izquierda.

X3R4CK3R

Cita de: ALONSOQ en  7 Agosto 2012, 17:34 PM
por cierto que significa memset(Palabra,0,100);?

http://bit.ly/HniJLP

google no muerde :-X ni tampoco cplusplus.com

Saludos