0

Tengo que introducir la estructura FOR y modificar este código existente, pero por más que le doy vueltas a la pregunta no consigo entender a que se refiere.

#include <iostream>
using namespace std;

void main(){
    float Jordi, Pascual, Jose, Carlos, Paco, suma;
    cout << "Jordi, ingresa cuanto dinero tienes \n";
    cin >> Jordi;
    cout << "Pascual, ingresa cuanto dinero tienes \n";
    cin >> Pascual;
    cout << "Jose, ingresa cuanto dinero tienes \n";
    cin >> Jose;
    cout << "Carlos, ingresa cuanto dinero tienes \n";
    cin >> Carlos;
    cout << "Paco, ingresa cuanto dinero tienes \n";
    cin >> Paco;
    suma = Jordi + Pascual + Jose + Carlos + Paco;
    cout << "Teneis " << suma << " euros" << endl;
    system("PAUSE");
}
Trauma
  • 25,297
  • 4
  • 37
  • 60
  • Lo qué te pedirán será que muestres los valores mediante un bucle for, no? – gmarsi Oct 15 '18 at 18:25
  • pero ahí no se ve tu intento de meter el for, quedo a la espera... – shop350 Oct 15 '18 at 18:55
  • probablemente se refieran a que tengas una variable float de `cantidad`, otra de `suma`, y otra de `contador`. Mientras vas en un bucle for solicitando valores en `cantidad` y luego sumando ese resultado en `suma`, cuando acabes el for, divides suma entre contador (para tener la media) – Jakala Oct 15 '18 at 19:47

3 Answers3

3

Se refiere sin duda a que en lugar de escribir cinco veces la misma instrucción con variables diferentes, uses un bucle para obtener los datos de manera cíclica:

#include <iostream>
#include <string>
#include <numeric>

void main()
{
    using namespace std;

    float valor[5]{};
    string nombre[5]{"Jodri", "Pacsual", "Jeso", "Calros", "Poca"}

    for (int indice = 0; indice < 5; ++indice)
    {
        cout << nombre[indice] << ", ingresa cuanto dinero tienes \n";
        cin >> valor[indice];
    }

    auto total = accumulate(begin(valor), end(valor), 0.f);
    cout << "Teneis " << total << " euros, " << (total / 5.f) << " euros de media\n";

    return 0;
}

Otras cosas a tener en cuenta.

  • La función main debe tener un valor de retorno de tipo int y devolver un valor al final de su ejecución. Lee este hilo para saber por qué.
  • No hay obligación de usar la cláusula using namespace std; pues es sólo es una ayuda a la escritura de código; si decides usar esta cláusula no lo hagas en el ámbito global, úsala en el ámbito más pequeño posible. Lee este hilo para saber por qué.
  • Evita abusar de std::endl (pues puede causar problemas de rendimiento) y favorece el uso del salto de línea explícito (\n). Lee este hilo para saber por qué.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
0

Una opcion que se me ocurre puede ser la siguiente:

float media = 0.0;
float suma = 0.0;
int imax = (la cantidad max que vas a usar)
int cantidad_aportantes = 0;
float dinero = 1.0;
while( dinero != 0) {
cout<<"Ingrese cantidad de dinero"<<endl;
cin>>dinero;
suma = suma + dinero;
cantidad_aportantes++;
}
media = suma / cantidad_aportantes;

La idea es que a medida que lo usuarios cargan la cantidad de dinero, se suma (var: suma), se cuenta la cantidad (var: cantidad_aportantes) y al final del ciclo cuando conoces todos los datos puedes obtener la media.

Otro detalle, supuse que la condicion de corte es que ingresen dinero == 0, puedes usar otra como maxima cantidad de iteraciones o la que consideres mejor.

Espero que te sea util, cualquier duda nos comunicamos.

Cristian Budzicz
  • 530
  • 1
  • 5
  • 24
0

Lo primero es que veo que has declarado variables para cada persona, al utilizar el bucle for solo es necesaria una variable de tipo float en este caso. En mi caso, voy a llamar a la variable: dinero. float dinero; Esta variable almacenará el dinero que tiene cada persona. A continuación, crearemos otra variable de tipo float llamada suma: float suma = 0.0f;. Aquí es importante igualarla a 0 porque si no, a la variable suma se inicializará con el valor que esté almacenado en la dirección de memoria en la que se ha guardado nuestra variable. Con esta variable, iremos llevando la suma de todo el dinero.

Antes de seguir con el código, te doy otro consejo a la hora de nombrar variables: EVITA empezar la primera letra de una variable en mayúscula, es decir, es mejor esto int numero; que esto int Numero;. La primera letra en mayúscula se suele utilizar a la hora de crear clases o métodos.

Ahora sí, comenzamos con el código:

#include <iostream>

using namespace std;

int main(){

    float dinero, suma = 0;

    for (int i = 1; i <= 5; i++){

        cout << "Introduce el dinero que tienes: ";
        cin >> dinero;

        suma += dinero;
    }

    cout << "Teneis " << suma << " euros." << endl;

    return 0;
}

He creado el bucle for como puedes observar en el código. En ese bucle, comenzamos creando una variable que se encargue de llevar la cuenta del ciclo del bucle: int i = 1;. Lo inicializo a 1 para que el bucle se repita 5 veces.

Después, ponemos la condición para salir del bucle. En este caso es: i <= 5;. Esto quiere decir que mientras que el valor de la variable i sea menor o igual que 5, el bucle se va a seguir ejecutando.

Lo último es aumentar el valor de la variable i en 1 (i++), si no, la variable i siempre valdrá el valor inicial y el bucle será infinito.

Dentro del bucle, nos pedirá que introduzcamos el dinero que tenemos. En la siguiente línea de código, la variable suma almacenará la suma del valor introducido en cada ciclo del bucle: suma += dinero; (es lo mismo que poner suma = suma + dinero;. Pero en este caso, repetimos suma dos veces y no es bueno repetir código en programación).

Cuando i vale 6, saldremos del bucle y se mostrará por pantalla el contenido de la variable suma.

Otra cosa que comentarte es que tienes que poner return 0; al final del programa, si no, el programa se cerrará automáticamente. Tú has utilizado system("PAUSE");. No sé si has ejecutado el programa, pero viendo tu código, no te va a dejar compilar el programa. Si quieres usar esa línea creo que tienes que añadir otra biblioteca.

Esto es todo. He visto que en otras respuestas han hecho el ejemplo con vectores. Creo que sin vectores, es más sencillo y rápido de hacer. Ya que cada uno elija cómo hacer este ejercicio. ¡Un saludo y espero haberte ayudado!