C++ średnia

Mam na zadanie obliczyć średnią wartość 3 liczb całkowitych podanych przez urzytkownika.

Do deklaracji zmiennych rzeczywistych użyj typu float.

Ja napisałem to w taki sposób, ale wynik się nie zgadza, co jest w tym kodzie źle?

#include 

         #include 

         #include 


          int main()

          {

          using namespace std;

          int a , b , c;


          cout <<"Podaj pierwsza liczbe :";

          cin >> a;

          cout <<"Podaj druga liczbe :";

          cin >> b;

          cout <<"Podaj trztecia liczbe :";

          cin >> c;


          float srednia ;

          srednia = (a + b + c)/3;


          cout <<"Srednia = " << srednia << endl;

          getch();

          return 0;

          }

W wyniku dzielenia int/int dostaje się int - wszystko liczby całkowite. Co najmniej jeden operand powinien być typu float, żeby dostać wynik zmiennoprzecinkowy.

A ty użyłeś inta. Int przez int zawsze daje int i dlatego wynik się nie zgadza.

Tak macie rację wypróbowałem i działa wielkie dzięki :smiley:

Przy różnych typach ma miejsce konwersja,jeśli do int’a,to obcina część wyniku co powoduje błędy w obliczeniach

np.

3.5+3.5=7.0

ułamek jest obcinany

więc mamy

3+3=6

Teraz rozumiesz ?,w ogóle ta 1/2 nie jest brana pod uwagę przy obliczeniach bo jest obcinana i ty miałeś ten sam problem,to daje złe wyniki,bo a,b,c są obcinane,wychodzi ci np. 3,50,a obcięte do 3

Acha dzięks na następny raz będę pamiętał

PHP zrobiłoby to automatycznie tzn. nie musiałbyś robić żadnego typowania/konwersji. Dlatego programowanie w C++ jest lepsze :evil:

@up 3.0f ; 3.0 to double :stuck_out_tongue: