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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


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

Desconectado Desconectado

Mensajes: 62



Ver Perfil
cadenas y funciones
« en: 6 Agosto 2012, 18:06 pm »

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?
Código
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<string.h>
  5. #include<ctype.h>
  6.  
  7. char  matriz[30];
  8. char matriz_alreves[30];
  9.  
  10. void suprimir_espacios (char m[]);
  11. void invertir_cadena (char c[]);
  12. void palindromo (char c[], char m[]);
  13. main()
  14. {
  15.  
  16. suprimir_espacios (matriz);
  17. strcpy (matriz_alreves, matriz);
  18. invertir_cadena (matriz_alreves);
  19. palindromo (matriz_alreves, matriz);
  20.  
  21.  
  22. }
  23.  
  24. void suprimir_espacios (char m[])
  25. {
  26.     int i, j;
  27.     printf("Dime un texto conespacios por favor:");
  28.     gets (m);
  29.  
  30.     for (i=0; i<strlen (m);i++)
  31.     {
  32.         m[i]= (tolower(m[i]));
  33.  
  34.         if (m[i]==' ')
  35.         {
  36.           for (j=i+1; m[j]!='\0'; j++)
  37.           {
  38.               m[j-1]=m[j];
  39.           }
  40.           m[j-1]='\0';
  41.         }
  42.  
  43.      }
  44.      printf("%s",m);
  45. }
  46. void invertir_cadena (char c[])
  47. {
  48.     int i, j;
  49.     char aux[30];
  50.     while (i>0)
  51.     aux[j++]=c[--i];
  52. }        
  53. void palindromo (char c[], char m[])
  54. {
  55. if (strcmp(c,m)==0)
  56.  
  57.    printf("Es palindromo\n");
  58.    else
  59.    printf("No es palindromo\n");
  60.  
  61. }


« Última modificación: 6 Agosto 2012, 18:55 pm por ALONSOQ » En línea

X3R4CK3R

Desconectado Desconectado

Mensajes: 74


Divide y vencerás


Ver Perfil WWW
Re: cadenas y funciones
« Respuesta #1 en: 6 Agosto 2012, 18:38 pm »

Código
  1. void invertir_cadena (char c[])
  2. {
  3.     int i;
  4.     while (i>0)
  5.     c[--i];
  6. }  

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
Código
  1. aux[j++]=c[i--] // Donde j empieza desde 0 y aumenta, e i empieza desde c.lenght() y decrementa hasta 0

Saludos


En línea

ALONSOQ

Desconectado Desconectado

Mensajes: 62



Ver Perfil
Re: cadenas y funciones
« Respuesta #2 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
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: cadenas y funciones
« Respuesta #3 en: 7 Agosto 2012, 01:24 am »

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
En línea

Ahorrate una pregunta, lee el man
X3R4CK3R

Desconectado Desconectado

Mensajes: 74


Divide y vencerás


Ver Perfil WWW
Re: cadenas y funciones
« Respuesta #4 en: 7 Agosto 2012, 15:05 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:

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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cadenas...
Programación Visual Basic
programatrix 3 2,295 Último mensaje 30 Diciembre 2005, 22:13 pm
por programatrix
[C] Problema con Struct en funciones que llaman a otras funciones
Programación C/C++
‭lipman 9 23,980 Último mensaje 19 Mayo 2011, 23:39 pm
por Littlehorse
cadenas
Programación C/C++
johrdy 8 5,190 Último mensaje 14 Febrero 2012, 19:03 pm
por Valkyr
concatenacion de cadenas sin usar funciones
Programación C/C++
fernaEDLP 2 1,843 Último mensaje 2 Mayo 2019, 13:21 pm
por fernaEDLP
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines