Jestem całkiem nowym użytkownikiem języka C++ i jestem bardzo blisko rozwiązania, ale nadal potrzebuję pomocy. Moja pętla działa poprawnie za pierwszym razem. Potem, kiedy wprowadzam numer samochodu, wydaje mi się, że gdzieś tam jest wejście i po prostu wykonuje nieprawidłowy kolor w drugim przejściu. Oczywiście, czegoś mi brakuje, ale jestem zagubiony. Każda pomoc będzie doceniona.Problemy z pętlą walidacji C++
To tylko mały fragment mojego programu, ale nie stanowi problemu:
while (count < 3)
{
cout << endl << "Enter car color: blue, red or green in lower case. ";
getline(cin, carColor[count]);
if (!(carColor[count] == "blue" || carColor[count] == "red" || carColor[count] == "green"))
{
cout << "That is an invalid color"
<< "The program will exit";
cin.clear();
cin.ignore();
return 0;
}
cout << endl << "Enter car number between 1 and 99: ";
cin >> carNumber[count]; // Enter car number
if (carNumber[count] >99 || carNumber[count] < 1)
{
cout << "That is not a correct number"
<< " The program will exit";
return 0;
}
cout << "car no is:" << carNumber[count] << "color: " << carColor[count];
++count;
// int lapCount{ 1 };
cout << endl;
}
Po wprowadzeniu numeru samochodu, to będzie umieścić numer, po którym następuje znak "\ n" (znak końca linii) w buforze. Ponieważ nie kasuje się cin, po pierwszej iteracji pętli bufor ma tylko tę linię końcową. Getline przeczyta tę linię końcową w następnej iteracji – Bettorun