Leer secuencia de doubles hasta tecla enter

Iniciado por radix.2007, 9 Febrero 2013, 23:58 PM

0 Miembros y 1 Visitante están viendo este tema.

radix.2007

Hola muchachos, soy nuevo en el foro, enohora buena por la web.
Soy estudiante de ingenieria en informática de sistemas, y aunque el lenguaje predeterminado que usamos es Java, hemos tocado algo de C, pero ahora estoy interesado en C++, estoy haciendo un programa que me calcule la media de una secuencia de números decimales, tengo que hacerlo con la instrucción 'cin', pero me encuentro con un problema, que la secuencia puede estar formada por 1, o dos o tres o 10 números, de manera que me hace falta leer los números hasta que pulse la tecla intro que supongo que es cuando verdaderamente se vací el buffer de teclado, los números los separo con espacions y al pulsar intro me tiene que calcuar la media, si he introducio 4 números pues tendria que sumar el total y dividirlo por 4 para calcular la media, pero mi principal problema es que no sé como hacer para que cuando pulse intro pueda leer esos 4 números separados por espacios (serian números decimales), alguna idea ?, saludos.

amchacon

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

leosansan

#2
Cita de: radix.2007..............................................................
pero mi principal problema es que no sé como hacer para que cuando pulse intro pueda leer esos "n" números separados por espacios (serian números decimales), alguna idea ?, saludos.
Espero que surjan ideas más ingeniosas que la que yo propongo. En principio es todo un reto al no tener prefijado el número n:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;
main()
{
   int i=0,j=0,k=0;
   float suma=0,Numero[100]={0};
   char Numero_char[15][10],cad[100];
   gets (cad);
   for (i = 0; i < cad[i]!='\0'; i++){
     if (cad[i]==' ') {
       Numero_char[k][j]='\0';
       k++;j=0;
       continue;
     }
      else {
         Numero_char[k][j]=cad[i];
         j++;
     }
   }
   Numero_char[k][j]='\0';
   cout<< endl <<endl ;
   for (i = 0; i <= k; i++){
     Numero[i]= atof (Numero_char[i]);
     suma+=Numero[i];
     }
   cout <<" Media= "<<(float) suma/(k+1)<<endl ;
   return 0;
}

Olvide que era con cin:
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;
main(){
  int i=0,j=0,k=0;
    float suma=0,Numero[100]={0};
    cin>>Numero[i];
    while (getchar ()!='\n'){
      i++;cin>>Numero[i];
    }
  cout<< endl <<endl ;
    for (j=0;j<=i;j++)
         suma+=Numero[j];
    cout <<" Media= "<<(float) suma/(i+1)<<endl ;
  return 0;
}

Saluditos!.

radix.2007

Uff ¡¡ perfecto, funciona perfecto perfectísimo, mil gracias, lo daba como muy difícil pero veo que era más sencillo de lo que me parecia, entiendo entonces que después de introducir cada número se comprueba si se ha pulsado la tecla Enter, y si es así dejamos de leer números, mil gracias de nuevo, está perfecto, saludos.