Witam,
Napisałem taki program
#include <iostream>
using namespace std;
bool spr (int a1)
{
bool spr1 = cin.good();
return spr1;
}
int main ()
{
int a;
cout<< "1)silnik \n2)okno\n3)kolo\n4)Koniec" << endl;
do
{
do
{
cin.clear();
cin.sync();
cin >> a;
spr (a);
}while (spr == false );
switch (a)
{
case 1:
cout << "git"<<endl;
break;
case 2:
cout << "przejebanE!"<<endl;
break;
case 3:
cout << "buahahhaha"<<endl;
break;
case 4:
cout<< "koniec!!!"<<endl;
break;
default:
cout<< "zle dane !! Podaj jeszcze raz !!!"<< endl;
break;
}
if ( a == 4 )
break;
}while (1);
}
Wszystko chodzi, jednak gdy w stumieniu wejścia wpisze zły znak np@, program idzie tak jakby dalej i wyświetla instrukcje "cout<< "zle dane !! Podaj jeszcze raz !!!"<< endl;" której nie powinien dlatego że pętla z strumieniem wejściowym powinna się wykonywać aż zostanie podane prawidłowe wartości zawarte w int, a funkcja spr zwróci true,
Niewiem zapewne czegoś niewiem lub do końca jak to działa więc na moją logikę powinno to być tak
złe dane -> jeszcze raz wczytuja i tak aż wczyta dobrą, i nie powinno wyświetlać tego bloku cout<< "zle dane !! Podaj jeszcze raz !!!"<< endl;