Duda cadenas C

Iniciado por juanpalomo098, 1 Diciembre 2016, 22:24 PM

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

juanpalomo098

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

MAFUS

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.

juanpalomo098

Ok, gracias tengo que investigar que son los indices primero

blakeyed

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.

juanpalomo098