Cześć,
Mam takie zadanie:
Napisz program wczytujący serię liczb i zapisujący je w wektorze vector<int>. Gdy użytkownik skończy podawanie liczb, program pyta, ile z nich ma zsumować. Gdy użytkownik wpisze jakąś liczbę N, program powinien wyświetlić sumę N pierwszych liczb z wektora.
Mój kod:
#include "std_lib_facilities.h"
int main()
{
vector<int> liczby;
int liczba, suma, n;
cout<<"Podaj kilka liczb (wpisz dowolna litere aby zakonczyc wczytywanie) \n";
while(cin>>liczba) //zapisywanie liczb do wektora
liczby.push_back(liczba);
cin.clear(); // czyszczenie strumienia wejściowego
cin.sync();
cout<<"Ile pierwszych liczb chcesz zsumowac? ";
cin>>n;
if(n>liczby.size()){ //sprawdza czy podana liczba jest w zakresie
cout<<"Poza wektorem \n";
return 0;
}
for(int i=0; i<n; i++) // sumuje n (pierwszych) liczb z wektora
suma+=liczby[i];
cout<<"Suma "<<n<<" pierwszych liczb: ";
for(int j=0; j<n; j++)
cout<<liczby[j]<<", ";
cout<<" zapisanych w wektorze wynosi: "<<suma<<endl; // wypisuje liczby i ich sumę
keep_window_open();
return 0;
}
Po zakończeniu pętli wczytującej liczby do wektora i bez wyczyszczenia strumienia wejściowego, program nie pyta o ilość liczb do zsumowania tylko podstawia wartość 1 i wykonuje dalsze instrukcje.
Pytanie:
Dlaczego bez wyczyszczenia strumienia wejściowego program nie zadziała? Gdzie jest błąd?
Czy to ma związek z kończeniem wpisywania liczb do wektora? Czyli podaniem jakiejś litery? Próbowałem kończyć wpisywanie skrótem ctrl+z bez czyszczenia cin, ale też nie działa.