Sono abbastanza nuovo in C++ e sono molto vicino alla soluzione, ma ho ancora bisogno di aiuto. Il mio ciclo funziona correttamente la prima volta. Dopo di che, quando inserisco il numero dell'auto, sembra che prenda qualche input da qualche parte e che esegua solo il colore non valido sul secondo passaggio. Ovviamente, mi manca qualcosa, ma sono in perdita. Qualsiasi aiuto sarebbe apprezzato.Problemi del ciclo di validazione C++
Questo è solo un piccolo frammento del mio programma, ma ci pone il problema:
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;
}
Dopo aver immesso il numero di auto, sarà messo il numero seguito da un '\ n' (carattere di fine riga) nel buffer. Dato che non si cancella cin, dopo la prima iterazione del ciclo, il buffer ha solo quella linea di fine. Getline leggerà quindi la fine della prossima iterazione – Bettorun