» Poradna » Programy

C++ - Aritmetický průměr

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 13/13
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [85.71.247.---]

Dobrý den, mám dotaz ohledně C++, přesnějí výpočet aritmetického průměru z 3 celých čísel.Např. 10,3,1 - arit.průměr výjde 5, ale v mém programu se zobrazí 4, protože se to zaoukrouhlí dolů. Potřeboval bych to nějak zafixovat, poradíte mi?int a,b,c; cout<<"Zadej:\n"; cin>>a>>b>>c; cout<<"Aritmeticky prumer je:\n"; cout<<(a+b+c)/3<<"\n";

Odpovědi na otázku

 |   |  Microsoft Windows XP Firefox 40.0

(Bez ověření, nemám tu C++)int a,b,c; cout<<"Zadej:\n"; cin>>a>>b>>c; cout<<"Aritmeticky prumer je:\n"; cout<<(float)((a+b+c)/3)<<"\n";

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [85.71.247.---]

Bohužel nefunguje ale děkuji za reakci

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 40.0

Aha, aha, aha, zkus (namísto tvého posledního řádku)cout<<(a+b+c)/3<<"\n";zadat:std::cout << std::fixed << std::setprecision(2) << (float)((a+b+c)/3);

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [85.71.247.---]

To se nevyřešilo ale děkuji

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 40.0

#include <cstdlib>#include <iostream>#include <iomanip>#include <limits>using namespace std;int main(int argc, char *argv[]){ int a,b,c; cout<<"Zadej:\n"; cin>>a>>b>>c; cout<<"Aritmeticky prumer je:\n"; std::cout << std::fixed << std::setprecision(4) << (float)((a+b+c)/3);}

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 40.0

Teda poslední řádek takhle std::cout << std::fixed << std::setprecision(4) << (float)(a+b+c)/3;

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85  |  [86.49.188.---]

cout<<(a+b+c)/3.0f<<"\n";

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 40.0  |  [195.168.70.---]

cout << round((a + b + c) / 3.0) << endl;

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 45.0.2454.85

int a,b,c;cout<<"Zadej:\n";cin>>a>>b>>c;cout<<"Aritmeticky prumer je:\n";cout<<(a+b+c)/3.0<<"\n";

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 40.0

Tak to nepočítej s intama (=celá čísla bez toho za desetinou čárnou). A mimochodem průměr nemá být 5, ale 4,667, protože 10+3+1 = 14, ne 15. A jelikož je tam int, tak se ti na to za čárkou vykašle a vypíše se jen 4. Není to o zaokrouhlování, ale o úplné ignoraci desetinných míst.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Linux Firefox 40.0  |  [195.168.70.---]

Ono problém je v tom, že v C++ je celočíselné delenie implementované ako tzv. "floor division", čiže výsledok "prejde" funkciou floor, preto to robí neplechu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Firefox 40.0

Tohle je řešení float a, b, c; cout << "Zadej:\n"; cin >> a >> b >> c; cout << "Aritmeticky prumer je:\n"; cout << int(ceil((a + b + c) / 3)) << "\n";

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 8.1 Firefox 40.0

musíš počítat s floatem, pak udělat celou část(ceil) a pak převést na int aby na výstupu bylo celé číslo bez desetinné čárky

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: C++, Průměr



Určitě si přečtěte



Aktuální číslo časopisu Computer

26 procesorů v důkladném testu

Zhodnotili jsme 18 bezdrátových reproduktorů

Jak fungují cash back služby?

Pohlídejte své děti na internetu