elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda cadenas C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda cadenas C  (Leído 2,042 veces)
juanpalomo098

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Duda cadenas C
« 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...


« Última modificación: 1 Diciembre 2016, 22:29 pm por juanpalomo098 » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Duda cadenas C
« Respuesta #1 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.


En línea

juanpalomo098

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Duda cadenas C
« Respuesta #2 en: 1 Diciembre 2016, 22:35 pm »

Ok, gracias tengo que investigar que son los indices primero
En línea

blakeyed

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Duda cadenas C
« Respuesta #3 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.
En línea

juanpalomo098

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Duda cadenas C
« Respuesta #4 en: 7 Diciembre 2016, 01:04 am »

Muchas gracias!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con cadenas
Programación Visual Basic
_LooSeR_ 6 2,548 Último mensaje 31 Marzo 2008, 18:21 pm
por ~~
[Duda] Tratado de cadenas.
PHP
skyweb07 9 3,550 Último mensaje 5 Abril 2010, 05:52 am
por KrossPock
[Duda] Colas en C (Con cadenas).
Programación C/C++
Alan2104 1 3,448 Último mensaje 7 Noviembre 2013, 01:48 am
por edr89
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines