Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/10/2012, 16:19
sonrasiel
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: problemas al ejecutar una función recursiva.

Gracias a los 2 les agradezco su paciencia ya que soy re novato en c++ sin enseñarme bucles ni condicionales me sentaron a programar funciones, estaba mirándolo como un dominio en vez de un condicional.pero aun no logro hacer lo que quiero para el programa la prueba de escritorio que yo supongo seria algo así.

introduzca un numero
236
b=0
236>1? si
b=0+1
imprime 1, "aunque no pasa"
retorna 236/10 a tam
23,6>1? si
b=1+1
imprime 2, "aunque no pasa"
retorna 23,6/10 a tam
2,36>1? so
b=2+1
imprime 3, "aunque no pasa"
retorna 2.36/10 a tam
0.23>1? no
imprime 3
----------
ya en el main
b=0.23 pero imprime 0 ó 4 si hago el cambio en 9 10 y 21
--------
la prueba de escritorio cuando este pulido el prog:
introduzca un numero
236
b=0
236>1? si
b=0+1

retorna 236/10 a tam
23,6>1? si
b=1+1

retorna 23,6/10 a tam
2,36>1? so
b=2+1

retorna 2.36/10 a tam
0.23>1? no
imprime 3
----


Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. float tam (float a)
  8. {
  9.    
  10. if ( (-1 > a) || (a > 1) ){
  11.     int b=0;
  12.     return tam  (a/10);
  13.         b++;
  14.         //return b;
  15.         cout<< b <<",";    
  16. }
  17. else{
  18.     return 0;//b;
  19. }}
  20.  
  21. int main()
  22. {
  23. float num,b;
  24. cout<< "introduzca el numero";  
  25. cin>>num;
  26. b=tam(num);
  27. cout<<" el tamaño es "<< b;  
  28. system("pause");
  29. return 0;
  30. }}

linea 9: copiando en el codigo
float b;
b=4; ...ejecutando lineas 9 y 10, y cambiando la linea 21 por return b; por que esta variable no se rompe al salir de la funcion y se imprime 4 dentro del main mientras b++ no?*/
linea 12: // aqui si entendi bien devuelve el valor num/10 a la funcion y la evalua denuevo.
linea 13: //cuenta las veces que se divide el numero, no estoy seguro de si lo esta haciendo.
linea 15 : //este b no se imprime, creia que es por que la variable no esta en el main y se rompe al salir de tam.
linea 26 : //si el numero es 236, b no deberia se = a 0.236 al ser el ultimo numero que retorno a tam?
linea 27: /*"aqui deberia llamar a la variable b++ del float de tam pero no se como llamarla
si esta en una funcion fuera del main "*/

Última edición por sonrasiel; 05/10/2012 a las 16:37