Hola gente, tengo este codigo, resulta que va todo bien, estuve usando el depurador, siguiendo las variables, y todo. Pero cuando termina el programa y me tiene que devolver el valor de la variable posicion, que esta en 5, nose porque se vuelve 0, y me devuelve el 0 en vez de el 5.
el programa cuenta la palabra mas larga y devuelve su posicion.
Si alguien me puede dar una mano les agradeceria, sin mas Pablo !!!!!
Código C++:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
int pos ( char* cadena,int i,int posicion,int cantL, int mayor)
{ cout<<"estoy por entrar al while"<<endl;
cout<<"valor "<< cadena[i] <<endl;
while (cadena[i] != NULL)
{ cout<<"entre al while"<<endl;
if (cadena[i] == ' ')
{ cout<<"entre al if primer"<<endl;
if(cantL>mayor)
{ cout<<"entre al if final"<<endl;
mayor=cantL;
posicion = i-cantL;
cout<<"POSICION -->"<<posicion<<"<---POSICION"<<endl;
cout <<"llegaste aca?"<<endl;
cout<<mayor;
cantL=0;
}
cout <<"QUE ONDA ACA MAN!?"<<endl;
pos(cadena,i+1,posicion,cantL,mayor);
cout<<"Estamos aca"<<posicion<<"<--ESO ES LO QUE TIENE QUE IMPRIMIR"<<endl;
return posicion;
}
else
{
cout<<"entre al else y fue falso, osea, 0"<<endl;
cout<<"CANTIDAD DE LETRAS "<<cantL<<endl;
pos(cadena, i+1, posicion, cantL+1, mayor);
return posicion;
}
}
}
int main()
{
int a=0;
char cadena[] = "rata ratom am";
cout<<"La super posicion es "<<pos ( cadena,0 ,a ,0 ,0 );
//cout<<"La posicion es: "<<posicion(cadena,0 ,0, );
//printf("%s\n", pos ( cadena,0 ,0 ,0 ,0 )) ;
return 0;
}