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.
#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);
}
}
Mejor manejalo con string y lee la cadena con getline(cin,variable) para que los espacios los cuentes y ya
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 ... :(
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
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
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:
#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