C zły wynik obliczeń [Rozwiązany]

0

Witam użytkowników.

Jestem początkującym programistą w C, zabrałem się za napisanie w miarę prostego programu do liczenia powierzchni elementów montowanych w wentylacji, Tata ma malutką firmę i chcę trochę ułatwić życie sobie i jemu przy podliczaniu powierzchni położonych kanałów, kolan itp.

Problem leży tu: (((((3.14*((aa)+(rr))))/2)-((3.14*(rr))/2))+((23.14*(a+r)/4)b)+(((23.14*r)/4)b))/1000000
po wprowadzeniu a=1000, b=1000, r=130 dostaję wynik 3.55 a powinno być 3.96. Jak pewnie zauważycie na przykładach (r
r) miało to być potęgowanie ale uprościłem to do takiego zapisu. Pomoże ktoś roziązać to lub nakieruje gdzie szukać rozwiązania?

0

Na pierwszy ogień wziąłbym dzielenia. Np. to: (a+r)/4 bo widzisz dzielenie int/int daje inta. Więc 10/3 = 3 (i 1 reszty). Zamień te wszystkie stałe na liczby zmiennoprzecinkowe (poprzez dodanie .0).

0

zmienne są typu float

0

A jak wklepiesz ten kod do kalkulatora to jaki daje ci wynik?

0

3.5482

0

( ( ( ( ( 3 , 1 4 * ( G 1 6 + G 1 8 ) 2 ) ) / 2 ) - ( ( 3 , 1 4 * G 1 8 2 ) / 2 ) ) + ( ( 2 * 3 , 1 4 * ( G 1 6 + G 1 8 ) / 4 ) * G 1 7 ) + ( ( ( 2 * 3 , 1 4 * G 1 8 ) / 4 ) * G 1 7 ) ) / 1 0 0 0 0 0 0 To jest z arkusza kalkulacyjnego, G16 to jest a, G17 to b, G18 to r. W arkuszu po wprowadzeniu takich samych danych dostaję 3.96

0

No to podziel to na kawałki i zobacz co nie bangla ;]

2

Już w pierwszym nawiasie masz błąd.

(a+b)2 to nie jest a2 + b2

0

Problem rozwiązany, jak zwykle takie nic a szkodzi, wielkie dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1