Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: darking664 en 16 Septiembre 2013, 23:19 pm



Título: [SOLUCIONADO]Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: darking664 en 16 Septiembre 2013, 23:19 pm
Esta ves quisiera saber si alguien ve mi error, al parecer la compilación sucede pero no muestra nada al ejecutarlo, si me pueden ayudar se los agradezco.


Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. void cadena(char cad[],int i);
  6.  
  7. using namespace std;
  8.  
  9. int main()
  10. {
  11. char cad[]="hola a todos";
  12.  
  13. cadena(cad,strlen(cad)-1);
  14.  
  15.  
  16. system("PAUSE");
  17. return EXIT_SUCCESS;
  18. }
  19.  
  20. //Imprimir una cadena alreves
  21. void cadena(char cad[],int i)
  22. {
  23. if(i<=0)
  24. {
  25. cout<<cad[i]<<" ";
  26. cadena(cad,i-1);
  27. }
  28. }
  29.  


Título: Re: Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: hyperiod en 16 Septiembre 2013, 23:22 pm
Mejor manejalo con string y lee la cadena con getline(cin,variable) para que los espacios los cuentes y ya


Título: Re: Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: darking664 en 16 Septiembre 2013, 23:33 pm
Mejor manejalo con string y lee la cadena con getline(cin,variable) para que los espacios los cuentes y ya


Gracias por la sugerencia y la rápida respuesta :D

Aunque me gustaría saber donde esta mi error ... :(



Título: Re: Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: 3mp3z@ndo en 16 Septiembre 2013, 23:41 pm
El error lo tienes en el if, le estás diciendo que si la longitud de la cadena es MENOR que cero imprima, como es mayor, pues no imprime.

Un saludo


Título: Re: Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: darking664 en 16 Septiembre 2013, 23:46 pm
El error lo tienes en el if, le estás diciendo que si la longitud de la cadena es MENOR que cero imprima, como es mayor, pues no imprime.

Un saludo



jejejeje....   ::)

GRACIAS... no se como no lo pude ver....  :o
le hacia mas caso a los procesos   :-\

de veras gracias  :rolleyes:  

 :xD


Título: Re: [SOLUCIONADO]Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)
Publicado por: rir3760 en 17 Septiembre 2013, 02:25 am
No es necesario pasar la longitud de una cadena "a la C" ya que el carácter '\0' marca el final de esta y puede utilizarse como condición de salida en la función recursiva:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void imprimir(char *p);
  5.  
  6. int main()
  7. {
  8.   char cad[] = "anitalavalatina";
  9.  
  10.   cout << cad << endl;
  11.   imprimir(cad);
  12.   cout << endl;
  13.  
  14.   return 0;
  15. }
  16.  
  17. void imprimir(char *p)
  18. {
  19.   if (*p != '\0'){
  20.      imprimir(p + 1);
  21.      cout << *p;
  22.   }
  23. }

Un saludo