[C++] Bład w programie obliczajacym pole trapezu
Ostatnio zmodyfikowano 2013-10-04 17:38
MIchazel Temat założony przez niniejszego użytkownika |
[C++] Bład w programie obliczajacym pole trapezu » 2013-10-04 17:20:09 Zrobiłem program obliczajacy pole trapezu. Ten program działa i liczy poprawnie ale np przy liczbach 10 5 3 wychodzi mi pole 22.00 a powinno być 22,50. Poniżej program #include<iostream> using namespace std; int main() { int a, b, h; double p; cin >> a; cin >> b; cin >> h; cout.precision( 2 ); cout.setf( ios::fixed, ios::floatfield ); p =(( a + b ) * h ) / 2; cout << p << endl; return 0; } |
|
killjoy |
» 2013-10-04 17:32:46 Obliczenia prowadzisz na liczbach typu int , więc nie dziw się, że wynik też jest liczbą całkowitą. Rozwiązanie jest proste: p =(( a + b ) * h ) / 2.0;
Liczba w takim zapisie 2.0 traktowana jest przez kompilator jako liczba typu double , a nie int , więc ostateczny wynik też będzie w liczbach rzeczywistych, gdyż tego typu liczbe zwróci ostatnie działanie. |
|
MIchazel Temat założony przez niniejszego użytkownika |
» 2013-10-04 17:38:25 Diękuje działa jak należy zamykam temat |
|
« 1 » |