Foros del Web » Programación para mayores de 30 ;) » C/C++ »

c++ recursividad un error tonto que no encuentro

Estas en el tema de c++ recursividad un error tonto que no encuentro en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/04/2011, 23:17
 
Fecha de Ingreso: abril-2011
Ubicación: Cordoba
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
De acuerdo c++ recursividad un error tonto que no encuentro

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <iostream.h>
  4.  
  5.  
  6.  
  7. int pos ( char* cadena,int i,int posicion,int cantL, int mayor)
  8.     {     cout<<"estoy por entrar al while"<<endl;
  9.           cout<<"valor "<< cadena[i] <<endl;
  10.        while (cadena[i] != NULL)
  11.        {                                          cout<<"entre al while"<<endl;
  12.           if (cadena[i] == ' ')
  13.              {                                                                cout<<"entre al if primer"<<endl;
  14.                               if(cantL>mayor)
  15.                               {                                                                                 cout<<"entre al if final"<<endl;
  16.                                              mayor=cantL;
  17.                                              posicion = i-cantL;
  18.                                              cout<<"POSICION -->"<<posicion<<"<---POSICION"<<endl;
  19.                                             cout <<"llegaste aca?"<<endl;
  20.                                             cout<<mayor;  
  21.                                             cantL=0;
  22.                                            
  23.                               }
  24.                                            
  25.                              
  26.                               cout <<"QUE ONDA ACA MAN!?"<<endl;
  27.                               pos(cadena,i+1,posicion,cantL,mayor);
  28.                               cout<<"Estamos aca"<<posicion<<"<--ESO ES LO QUE TIENE QUE IMPRIMIR"<<endl;
  29.                               return posicion;
  30.                              
  31.                              
  32.              }          
  33.           else
  34.                {
  35.                         cout<<"entre al else y fue falso, osea, 0"<<endl;
  36.                         cout<<"CANTIDAD DE LETRAS   "<<cantL<<endl;
  37.                         pos(cadena, i+1, posicion, cantL+1, mayor);
  38.                        
  39.                         return posicion;
  40.                                  
  41.                }
  42.           }                    
  43. }                                  
  44.                                  
  45. int main()
  46.  
  47. {
  48.     int a=0;
  49.      
  50.      char cadena[] = "rata ratom am";
  51.      cout<<"La super posicion es "<<pos ( cadena,0 ,a ,0 ,0 );
  52.      //cout<<"La posicion es: "<<posicion(cadena,0 ,0, );
  53.      //printf("%s\n", pos ( cadena,0 ,0 ,0 ,0 )) ;
  54.  
  55.      system("pause");
  56.      return 0;
  57. }
  #2 (permalink)  
Antiguo 09/04/2011, 16:58
 
Fecha de Ingreso: julio-2009
Mensajes: 81
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: c++ recursividad un error tonto que no encuentro

if(cantL>mayor)

de entrada cantL es igual a mayor... es decir.. se sale del if.
if (cadena[i] == ' '); si la entrada es "rata ratom am"; se va a salir de ese if.
ademas fijate que funcione con "==" ... sino es .equals.

te recomiendo sigas los valores de las variables depurandolo...
es sabado en el anocheser y no quiero ver codigo.

Etiquetas: palabras, recursividad, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.