Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Bład w programie obliczajacym pole trapezu

Ostatnio zmodyfikowano 2013-10-04 17:38
Autor Wiadomość
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
C/C++
#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;
}
P-93089
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:
C/C++
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.
P-93092
MIchazel
Temat założony przez niniejszego użytkownika
» 2013-10-04 17:38:25
Diękuje działa jak należy zamykam temat
P-93093
« 1 »
  Strona 1 z 1