entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

c++ dar suma promedio y finalizar en caso de valor nulo

EN C++ : Dado un conjunto de valores enteros, que finaliza con un valor nulo, informar:
a) La suma de los valores mayores a 50
b) El promedio de valores entre 30 y 70.
Se me ha complicado la resolución.

#include<iostream>
using namespace std;
int pedirValor();
int main()
{

    int sInt=0;
    int q=0;
    int m50=0;
    int valor;
    float prom;
    valor = pedirValor();
     while(valor!=0){
     if(valor>50){ m50=m50+valor;}
     if((valor>=30) && (valor<=70)){
    sInt+= valor;
    q++;}
    valor=pedirValor();
}
  cout<<"suma mayores 50"<<m50<<endl;
  if (q>0) {
       prom=sInt/q;
       cout<<"promedio entre 30 y 70"<<prom<<endl;
       } else{
            cout<<"no existe ese intervalo"<<endl;
       }
       int pedirValor(){
           int v;
           cin>>v;
           do{ 
               cout<<"Ingrese valor:"<<v<<endl;}

           while(v>0);

           };
       return 0;
}             

El compilador determina que debería haber una expresión primaria antes de int , que debería haber un ";" antes del int y que tengo un build error.
Esto es donde dice:

**int pedirValor(){
           int v;
           cin>>v;**

1 Respuesta

1voto

white Puntos75880

Talvés sea hacerte la tarea, pero.. Tu función pedirValor no tiene sentido, tiene llaves por doquier, el while no termina nunca si un numero es mayor a 0. lo que no tiene sentido. intenta obtener el valor con getline() y obten la linea con stringstream.

int pedirValor(){

    string in = "";
    int v;

    cout << "ingresa un valor: ";

    getline(cin, in);
    std::stringstream s(in);

    if (!(s >> v))
    {
        v = NULL;
    }

    return v;
}

en la funcion main:

int sumaNumeros50 = 0;
int promedioSuma = 0;
int promedioCuenta = 0;
int valor;

while((valor = pedirValor()) != NULL && valor != 0)
{
    if(valor > 50)
    {
        sumaNumeros50 += valor;
    }

    else if(valor >= 30 && valor <= 70)
    {
        promedioSuma += valor;
        promedioCuenta += 1;
    }
}

cout << "suma mayores a 50: " << sumaNumeros50 << endl;

if(promedioCuenta > 0)
{
    cout << "promedio 30 y 70: " << promedioSuma / promedioCuenta
         << " (" << promedioCuenta <<" numeros totales)" << endl;
}

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta