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

problema bucle while

Estas en el tema de problema bucle while en el foro de C/C++ en Foros del Web. Hola, hice una función que hace la sumatoria de un numero de 0 a n, solo que al ejecutar siempre me da 0 asi pues ...
  #1 (permalink)  
Antiguo 16/10/2012, 17:24
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
problema bucle while

Hola, hice una función que hace la sumatoria de un numero de 0 a n, solo que al ejecutar siempre me da 0 asi pues supongo que el bucle while no se esta ejecutando no se donde estará el problema por que en la prueba de escritora que corrí en mi cabeza si sirve.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  int suma(int a){
  5.         if (a>0){
  6.             while(a>0){
  7.             a=a+(a-1);
  8.             return suma(a);
  9.         }}
  10.         else
  11.         return 0;
  12.  }
  13. int main() {
  14.     int a,b;
  15.     cout<<"digite el numero"<<endl;
  16.     cin>>a;
  17.     cout<<"la suma de los n numeros es :"<<suma(a)<<endl;
  18.     system ("pause");
  19.     return 0;
  20. }
  #2 (permalink)  
Antiguo 16/10/2012, 20:11
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: problema bucle while

No entendí muy bien lo que quieres hacer, pero llamas desde la función suma() llamas a suma()?

Código C++:
Ver original
  1. int suma (int a)
  2. {
  3.     suma(a);
  4. }

Para retornar el valor simplemente debes hacer:

Código C++:
Ver original
  1. return a;

Igualmente, eso solo retornará un valor. Creo que el while debes hacerlo fuera de la función, o directamente imprimir los numeros desde la función sin retornar nada.

  #3 (permalink)  
Antiguo 16/10/2012, 22:40
 
Fecha de Ingreso: septiembre-2012
Mensajes: 29
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problema bucle while

a perdón claro me equivoque y no debí usar un while ya que el bucle lo efectúa la función con la recursión. este seria el programa pero = me da 0.
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4.  int suma(int a){
  5.         if (a>0){
  6.             while(a>0){
  7.             a=a+(a-1);
  8.             return suma(a);
  9.         }}
  10.         else
  11.         return 0;
  12.  }
  13. int main() {
  14.     int a,b;
  15.     cout<<"digite el numero"<<endl;
  16.     cin>>a;
  17.     cout<<"la suma de los n numeros es :"<<suma(a)<<endl;
  18.     system ("pause");
  19.     return 0;
  20. }
  #4 (permalink)  
Antiguo 17/10/2012, 11:52
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: problema bucle while

Pues porque estás retornando de la manera incorrecta:

Código C++:
Ver original
  1. return suma(a);

Simplemente debes hacer:

Código C++:
Ver original
  1. return a;

Etiquetas: bucle
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 17:01.