Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: radix.2007 en 9 Febrero 2013, 23:58 pm



Título: Leer secuencia de doubles hasta tecla enter
Publicado por: radix.2007 en 9 Febrero 2013, 23:58 pm
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.


Título: Re: Leer secuencia de doubles hasta tecla enter
Publicado por: amchacon en 10 Febrero 2013, 00:13 am
Código
  1. while (cin>>Numero[i])
  2. {
  3.   i++;
  4. }


Título: Re: Leer secuencia de doubles hasta tecla enter
Publicado por: leosansan en 10 Febrero 2013, 15:48 pm
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
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6. main()
  7. {
  8.    int i=0,j=0,k=0;
  9.    float suma=0,Numero[100]={0};
  10.    char Numero_char[15][10],cad[100];
  11.    gets (cad);
  12.    for (i = 0; i < cad[i]!='\0'; i++){
  13.      if (cad[i]==' ') {
  14.        Numero_char[k][j]='\0';
  15.        k++;j=0;
  16.        continue;
  17.      }
  18.       else {
  19.          Numero_char[k][j]=cad[i];
  20.          j++;
  21.      }
  22.    }
  23.    Numero_char[k][j]='\0';
  24.    cout<< endl <<endl ;
  25.    for (i = 0; i <= k; i++){
  26.      Numero[i]= atof (Numero_char[i]);
  27.      suma+=Numero[i];
  28.      }
  29.    cout <<" Media= "<<(float) suma/(k+1)<<endl ;
  30.    return 0;
  31. }
  32.  
Olvide que era con cin:
Código
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4.  
  5. using namespace std;
  6. main(){
  7.  int i=0,j=0,k=0;
  8.    float suma=0,Numero[100]={0};
  9.    cin>>Numero[i];
  10.    while (getchar ()!='\n'){
  11.      i++;cin>>Numero[i];
  12.    }
  13.  cout<< endl <<endl ;
  14.    for (j=0;j<=i;j++)
  15.         suma+=Numero[j];
  16.    cout <<" Media= "<<(float) suma/(i+1)<<endl ;
  17.  return 0;
  18. }
  19.  
Saluditos!.


Título: Re: Leer secuencia de doubles hasta tecla enter
Publicado por: radix.2007 en 10 Febrero 2013, 21:57 pm
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.