Průměr třídy
Učitelka chce vědět, jak test dopadl celkově: kolik bodů měli žáci v průměru. Průměr je součet bodů vydělený počtem žáků. Součet je vzor z lekce o cyklech: proměnná, která začíná na 0, a cyklus, který k ní přičte každou hodnotu. Tady stačí cyklus for (int pocet : body), protože potřebujete jen body.
Průměr spočítá nová funkce prumer(). Vektor dostane jako const std::vector<int>&, stejně jako vypisVysledky(): bez kopírování a jen ke čtení. Vrací desetinné číslo, takže její typ je double.
Pozor na celočíselné dělení. Když dělíte celé číslo celým číslem, C++ zbytek zahodí a výsledek je zase celé číslo: 7 / 2 je 3. Součet bodů v proměnné typu int vydělený body.size() by dal 33 místo 33.8. Desetinný výsledek dostanete, když je aspoň jedno z čísel desetinné (7.0 / 2 je 3.5). Nejjednodušší je sčítat rovnou do proměnné typu double:
std::vector<int> teploty = {18, 21, 23, 19};
double soucet = 0;
for (int t : teploty) {
soucet += t;
}
std::cout << "Průměrná teplota: " << soucet / teploty.size() << std::endl;Průměrná teplota: 20.25C++ vypisuje desetinná čísla s tečkou, ne s čárkou.
A ještě jedna past: return patří za cyklus. Uvnitř cyklu by ukončil funkci hned v prvním průchodu a průměr by se počítal jen z bodů prvního žáka.
Jak psát:
Pokyny
Nad funkci vypisVysledky() napište funkci double prumer(const std::vector<int>& body), která sečte všechny prvky vektoru body a vrátí součet vydělený jejich počtem.
Na konci funkce vypisVysledky(), za cyklem (ne v něm), vypište průměr spočítaný funkcí prumer(). Pod výsledky žáků přibude řádek:
Průměr bodů: 33.8Pokud vidíte 33, sčítáte do proměnné typu int. Pokud vidíte 8.4, je return uvnitř cyklu.
Začněte programovat zdarma
3/7