Vector w pętli z warunkiem

0

Zadanie: Zdefiniuj pusty wektor i dopisz do niego pięć parzystych liczb całkowitych pobranych z
klawiatury. Zabezpiecz proces wpisywania przed omyłkowym podaniem innej liczby –
wysłanie ostrzeżenia i kontynuacja. Na koniec wyświetl rozmiar wektora oraz wszystkie
wartości elementów

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> parz;
    unsigned int p;
    for(int i=0; i<5; i++){
        cin>>p;
        if(p%2==0){
            parz.push_back(p);
        }
        else cout<<"Liczba musi byc parzysta"<<endl;
        }
    for(int i=0; i<5; i++)
        cout<<parz.at(i)<<endl;
    cout<<"elementow: "<<parz.size();
    return 0;
}

Pomoże mi ktoś przekształcić kod żeby iterator w pętli nie zwiększał się po wpisaniu liczby nieparzystej? Z góry dzięki!

0

Użyj while zamiast fora, zapętl dopóki wielkość parz jest mniejsze od 5

0

Inna opcja to usunąć z tego for-a co masz warunek kontynuacji:

for(int i = 0; ; i++)

i dodać instrukcję break w if-ie dodającym do wektora, jeśli jego wielkość wyniesie 5. Jednakże, poniższy zapis chyba będzie poprawniejszy:

do
{
   //dodaj do wektora liczbę parzystą
}
while (parz.size() < 5);
0

while/do...while o wiele lepsze. for sugeruje, że wykona dokładnie n obiegów, a w tym przypadku nie wiemy ile razy użytkownik wpisze liczbę z zamkniętymi oczami ;)

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