Hola he hecho este programa a base de dos funciones ( suprimir espacios , e invertir cadena) y finalmente copiando una cadena en otra y comparándolas trato de determinar si espalindromo, pero la última parte no me funciona; me podeis ayudar por favor?
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
char matriz[30];
char matriz_alreves[30];
void suprimir_espacios (char m[]);
void invertir_cadena (char c[]);
void palindromo (char c[], char m[]);
main()
{
suprimir_espacios (matriz);
strcpy (matriz_alreves, matriz);
invertir_cadena (matriz_alreves);
palindromo (matriz_alreves, matriz);
getch();
}
void suprimir_espacios (char m[])
{
int i, j;
printf("Dime un texto conespacios por favor:");
gets (m);
for (i=0; i<strlen (m);i++)
{
m[i]= (tolower(m[i]));
if (m[i]==' ')
{
for (j=i+1; m[j]!='\0'; j++)
{
m[j-1]=m[j];
}
m[j-1]='\0';
}
}
printf("%s",m);
}
void invertir_cadena (char c[])
{
int i, j;
char aux[30];
while (i>0)
aux[j++]=c[--i];
}
void palindromo (char c[], char m[])
{
if (strcmp(c,m)==0)
printf("Es palindromo\n");
else
printf("No es palindromo\n");
}
Cita de: ALONSOQ en 6 Agosto 2012, 18:06 PM
void invertir_cadena (char c[])
{
int i;
while (i>0)
c[--i];
}
La función no hace nada útil, digamos que es solo lectura, el bucle va leyendo el caracter desde el final hasta el principio sin hacer ningún cambio.
Tendrías que usar una variable auxiliar donde almacenar la cadena original invertida
aux[j++]=c[i--] // Donde j empieza desde 0 y aumenta, e i empieza desde c.lenght() y decrementa hasta 0
Saludos
Muchas gracias por tu ayuda, lo modifico en el programa original añadiendo lo que me dices, pero creo que no te entiendo bien. ¿ es a lo que te refieres? no funciona
gracias
Hola! para q pienses:
1º es necesario el strcpy??
2º la cadena invertida se almacena en matriz_alreves??
3º si aux es un arreglo declarado en invertir_cadena(), es visible para todo el programa???
Saludos
Cita de: ALONSOQ en 6 Agosto 2012, 18:57 PM
Muchas gracias por tu ayuda, lo modifico en el programa original añadiendo lo que me dices, pero creo que no te entiendo bien. ¿ es a lo que te refieres? no funciona
gracias
Claro que no funciona, como dice
durasno:
Cita de: durasno en 7 Agosto 2012, 01:24 AM
para q pienses
Te he explicado el porqué no funciona tu función y te he ofrecido un hilo del que tirar para hacerla funcionar, en tus manos y cabeza queda que desarrolles el code. ;)
Saludos