[SOLUCIONADO]Recursividad: Simulacion de ciclos (Imprimir una cadena alreves)

Iniciado por darking664, 16 Septiembre 2013, 23:19 PM

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

darking664

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 (cpp) [Seleccionar]

#include <cstdlib>
#include <iostream>
#include <cstring>

void cadena(char cad[],int i);

using namespace std;

int main()
{
char cad[]="hola a todos";

cadena(cad,strlen(cad)-1);


system("PAUSE");
return EXIT_SUCCESS;
}

//Imprimir una cadena alreves
void cadena(char cad[],int i)
{
if(i<=0)
{
cout<<cad[i]<<" ";
cadena(cad,i-1);
}
}

hyperiod

Mejor manejalo con string y lee la cadena con getline(cin,variable) para que los espacios los cuentes y ya

darking664

Cita de: 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


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

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


3mp3z@ndo

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

darking664

Cita de: 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



jejejeje....   ::)

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

de veras gracias  :rolleyes:  

:xD

rir3760

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 (cpp) [Seleccionar]
#include <iostream>
using namespace std;

void imprimir(char *p);

int main()
{
   char cad[] = "anitalavalatina";
   
   cout << cad << endl;
   imprimir(cad);
   cout << endl;
   
   return 0;
}

void imprimir(char *p)
{
   if (*p != '\0'){
      imprimir(p + 1);
      cout << *p;
   }
}


Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language