Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: juanpalomo098 en 1 Diciembre 2016, 22:24 pm



Título: Duda cadenas C
Publicado por: juanpalomo098 en 1 Diciembre 2016, 22:24 pm
Hola, tengo una duda,  a ver si alguien puede echarme una mano¿como puedo convertir una cadena al revés en otra cadena distinta?
Tengo que hacer un programa que diga si es palindromo o no y no tengo ni idea de como empezar..
Si hubiera alguna forma de convertir una cadena al revés en otra para compararla.No se si estoy diciendo una locura...


Título: Re: Duda cadenas C
Publicado por: MAFUS en 1 Diciembre 2016, 22:30 pm
Qué tal con indices?
Uno desde el principio hasta la mitad y el otro desde el final hasta la mitad. Si las letras en el índice son iguales mueves el índice, sino paras el bucle.
Compruebas si el índice ha llegado a la mitad, si es así es un palíndromo.


Título: Re: Duda cadenas C
Publicado por: juanpalomo098 en 1 Diciembre 2016, 22:35 pm
Ok, gracias tengo que investigar que son los indices primero


Título: Re: Duda cadenas C
Publicado por: blakeyed en 5 Diciembre 2016, 17:40 pm
Hola,

Como dice MAFUS, con índices sería una buena solución, algo así como:

Siento str nuestra cadena...

Código
  1. int total = strlen(str)-3; // Si tenemos 4 letras, la última será la número 3
  2. int i;
  3. int ok = 1; // Son palíndromos hasta que se demuestre lo contrario
  4.  
  5. for (i=0; i<total; i++, total--)
  6. {
  7.  if (str[i] != str[total])
  8.  {
  9.    ok = 0;
  10.    break;
  11.  }
  12. }
  13.  
  14. if (ok)
  15.  printf ("Son palindromos\n");

No sé, algo así.

También puedes coger un algoritmo para darle la vuelta a la cadena, por ejemplo http://totaki.com/poesiabinaria/2009/05/volteando-cadenas/ y comparar las dos cadenas, con strcpy() si la cadena al revés es la misma que la cadena derecha, ya lo tienes.
El segundo método es más costoso, pero más general y más cómodo.


Título: Re: Duda cadenas C
Publicado por: juanpalomo098 en 7 Diciembre 2016, 01:04 am
Muchas gracias!!