[C++] średnia arytmetyczna liczb nieujemnych

Pytania o rozwiązania zadań.
Otrzymałeś(aś) rozwiązanie do zamieszczonego zadania? - podziękuj autorowi rozwiązania! Kliknij
anilahcim
Rozkręcam się
Rozkręcam się
Posty: 31
Rejestracja: 07 paź 2012, 18:02
Podziękowania: 12 razy
Płeć:

[C++] średnia arytmetyczna liczb nieujemnych

Post autor: anilahcim »

Mam problem w rozwiązaniu zadania:

Wczytuj kolejne liczby całkowite z klawiatury. Zakończ wczytywanie gdy użytkownik wprowadzi liczbę ujemną. Wypisz na ekran średnią arytmetyczną wszystkich wprowadzonych liczb nieujemnych.

To jest moje rozwiązanie:


#include <iostream>
using namespace std;

int main()
{
int x, suma, ilosc;
double srednia;
ilosc = 0;
suma = 0;

do
{
cout<< "Wpisz liczbe calkowita: " << endl;
cin>> x;
if (x>=0)
suma += x;
ilosc++;
srednia=suma/ilosc;
}
while (x>=0);
cout<< "Srednia arytmetyczna liczb nieujemnych: " << srednia << endl;

system("pause");
return 0;
}


Wynik wychodzi mi zły i nie wiem gdzie jest błąd. Nie widzę też różnicy w kolejności 16 i 17 wiersza (suma i ilość), a jeśli zamienię je ze sobą dostaję różne wyniki. Na przykład, w powyższej wersji, jeśli wpisuję liczby: 10, 5, 5, 20, -10 otrzymuję wynik 8. Jeśli zamienię wiersz 16 i 17, wynik jest 7.

Proszę o pomoc i z góry dziękuję.
Dexous
Stały bywalec
Stały bywalec
Posty: 571
Rejestracja: 03 gru 2011, 10:43
Podziękowania: 388 razy
Otrzymane podziękowania: 7 razy
Płeć:

Re: [C++] średnia arytmetyczna liczb nieujemnych

Post autor: Dexous »

#include <iostream>
using namespace std;

int main()
{
int x, suma, ilosc;
double srednia;
ilosc = 0;
suma = 0;

do
{
cout<< "Wpisz liczbe calkowita: " << endl;
cin>> x;
if (x>=0)
{
suma += x;
ilosc++;
}
} while (x>=0);
srednia= (double)suma/ilosc; // zeby wynik byl zmiennoprzecinkowa, jedna z liczb musi byc tego typu
cout<< "Srednia arytmetyczna liczb nieujemnych: " << srednia << endl;

system("pause");
return 0;
}
anilahcim
Rozkręcam się
Rozkręcam się
Posty: 31
Rejestracja: 07 paź 2012, 18:02
Podziękowania: 12 razy
Płeć:

Re: [C++] średnia arytmetyczna liczb nieujemnych

Post autor: anilahcim »

Bardzo dziękuję!
anilahcim
Rozkręcam się
Rozkręcam się
Posty: 31
Rejestracja: 07 paź 2012, 18:02
Podziękowania: 12 razy
Płeć:

Re: [C++] średnia arytmetyczna liczb nieujemnych

Post autor: anilahcim »

Czyli problem był tylko w tym, że nie wpisałam tam double, tak? Bo to, że to działanie włożyłam do pętli, chyba nie ma znaczenia, zgadza się?
anilahcim
Rozkręcam się
Rozkręcam się
Posty: 31
Rejestracja: 07 paź 2012, 18:02
Podziękowania: 12 razy
Płeć:

Re: [C++] średnia arytmetyczna liczb nieujemnych

Post autor: anilahcim »

A, jeszcze zapomniałam o nawiasie po if. Dobra, już rozumiem :)
Dexous
Stały bywalec
Stały bywalec
Posty: 571
Rejestracja: 03 gru 2011, 10:43
Podziękowania: 388 razy
Otrzymane podziękowania: 7 razy
Płeć:

Post autor: Dexous »

To byl glowny powod. Dodatkowo nie dalas klamer po if i w kazdym kroku petli co prawda dodawalas x ale ilosc zwiekszalas takze w kroku gdy wprowadzilas wartosc ujemna.
ODPOWIEDZ