Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: JetBlazar en 16 Noviembre 2010, 22:50 pm



Título: Problema con un programa de c++
Publicado por: JetBlazar en 16 Noviembre 2010, 22:50 pm
#include <iostream>
#include <conio.h>
#include <cstdio>
using namespace std;
 
int sumatorio(); // Prototipo de la funcion que calcula el sumatorio.
 
 
int main()
{
 cout<<" 1. Calcula el sumatorio de un solo numero"<<endl;
 cout<<" 2. Calcula el sumatorio de varios numeros de uno en uno"<<endl;
 cout<<" 3. Calcula el sumatorio de varios numeros al mismo tiempo"<<endl;
 
 int decision;
 cin>> decision;
 
 switch(decision)
 
    {
                 case 1 : cout<<"Escogio la opcion 1"<<endl;
                          sumatorio();   
                         
                          break;           
       
       
                 case 2 : cout<<"Escogio la opcion 2"<<endl;
                          char seguir;
                          do{
                                  sumatorio();
                                  cout<<"¿Quieres seguir calculando sumatorios? s = Si n = No"<<endl;
                                  cin>> seguir;
                                  }while (seguir == 's');
                          if (seguir != 's')
                              cout<<"Usted ha decidido no hacer mas sumatorios"<<endl;
                         
                          break;
                 
                 case 3 : cout<<"Escogio la opcion 3"<<endl;
                         
       
       
                 
     }             
 
 system ("pause");
 return 0;   
}
   
   
   
   int sumatorio()
   {
          int i;
          int suma = 0;
          int num;
          cout<<"Numero del cual quieres calcular el sumatorio: "<<endl;
          cin>>num;
          for (i=0; i<=num; i++)
              {
                 suma= suma +i;
              }
          cout<<"El sumatorio de "<<num<<endl;
          cout<<"es "<<suma<<endl;
    }

Mi problema es que como sabreis (si leistis el principio del programa) para el caso 3 del switch se supone que quiero hacer que el programa pida unos numeros de tal modo que tu los escribas todos en una linea con espacios por ejemplo:
23 10 45 89
o con comas de separacion y que devuelva los sumatorios, supongo que se hara con vectores pero no se como hacer para que el programa me pida las coordenadas de un vector y que sean indefinidas porque lo que no quiero es que el supuesto usuario del programa tenga que decir primero el numero de sumatorios que quiere calcular. Todas las respuestas seran bienvenidas asi como las mejoras para el codigo ya escrito.



Título: Re: Problema con un programa de c++
Publicado por: Akai en 16 Noviembre 2010, 23:53 pm
Sería algo así:

Código
  1. int num;
  2. char aux;
  3. do{
  4.        cin >>num; // leemos un numero
  5.        cin.get(aux); // leemos un carácter
  6.      // calcular el sumatorio aquí
  7.    }while(aux!='\n'); //si llegamos al final de linea, salimos.
  8.  
De esta forma, puedes leer secuencias como las que quieres leer.

Consejos:

No uses conio.h --> http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html punto 4
No necesitas un system("pause") para ver el resultado del programa -->
http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html
Creo que no necesitas cstdio en este caso.

Por cierto, tu función sumatorio, en principio dice que devolverá un entero pero no has hecho ninguna sentencia de return. O la declaras como void si no va a devolver nada, o haz que devuelva algo.