Zczytywanie liczb, obliczanie średniej

0

Witam. Dostałem polecenie, aby napisać programik, który:
zczyta ocenę z egzaminu
będzie zczytywał i sumował oceny z laborek tak długo, aż wpisze się x

następnie mam obliczyć sumę i średnią ( 40% z egzaminu i 60% z laborek )

Napisałem program, ale mam problem, ponieważ mój program nie zczytuje wszystkich ocen, które podaję.

# include <iostream>

using namespace std;

float ocena_egzamin;
float ocena_laborki;
float suma_laborki;
float srednia;

int i = 0;
char x;

main ()
{
     cout<<"Witaj w programie obliczajacym Twoja ocene koncowa na podstawie :"<<endl;
     cout<<"\t - oceny z egzaminu,"<<endl;
     cout<<"\t - ocen z laborek. \n"<<endl;
     
     cout<<"Podaj ocene, ktora otrzymales z egzaminu. \t";
     cin>>ocena_egzamin;
     cout<<endl<<endl;
     
     
     cout<<"Podaj ocene z laborek."<<endl; 
     
     do 
     {     
           cin>>ocena_laborki;
           suma_laborki += ocena_laborki;
           i++;
     }
     while (cin >> x);

     
           srednia = ((0.4 * ocena_egzamin ) + (0.6 * suma_laborki ))/i;
     
     
     cout<<"Suma otrzymanych przez Ciebie ocen z laborek wynosi : "<<suma_laborki<<endl;
     cout<<"Ilosc wprwadzonych ocen z laborek : "<<i<<endl;
     cout<<"Ocena, ktora otrzymales za egzamin : "<<ocena_egzamin<<endl;
     cout<<"Twoja ocena koncowa wynosi : "<<srednia<<endl<<endl;
     
     
system("PAUSE");     
}

Progam musi być napisany na podstawie pętli.

W którym miejscu mam błąd ( nie chce całego całego programu "jak na tacy", tylko proszę o przybliżenie mnie do wykrycia błędu).
Pozdrawiam Arkadiusz.

0

po 1.
int main i na końcu return jeśli to ma byc c++.
po 2.
poczytaj o różnicach między typami zmiennymi. Char i INT to 2 różne sprawy.

zmień char x na int x

0

Więc co musiałbym poprawić?
int main już dodałem
zarówno char x, jak i int i nic nie dają.
Program i tak nie wczytuje wszystkich podanych liczb

0

Twoim problemem jest warunek zakończenia pętli.
while (cin >> x); nie robi tego co myślisz, że robi. Taka konstrukcja byłaby pożądana, gdybyś chciał wczytywać x aż do napotkania końca pliku.

0

Dziękuje za pomoc
poradziłem sobie tak :
while (cin>>ocena_laborki)
{
suma_laborki += ocena_laborki;
i++;
}
srednia_laborki = suma_laborki/i;
srednia = (0.4 * ocena_egzamin ) * (0.6 * srednia_laborki );

0

Petla jest nieskonczona
ma skonczyc sie w chwili wpisania NIE LICZBY, np jakiegos znaku.

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