Test Foro de elhacker.net SMF 2.1

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...

int total = strlen(str)-3; // Si tenemos 4 letras, la última será la número 3
int i;
int ok = 1; // Son palíndromos hasta que se demuestre lo contrario

for (i=0; i<total; i++, total--)
{
  if (str[i] != str[total])
  {
    ok = 0;
    break;
  }
}

if (ok)
  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!!