Może te dwa ostatnie wpisy faktycznie do tematu i na temat.:-(
W telegraficznym skrócie. Dodałem do przedstawionego kodu przed wierszem cin >> wybor zasugerowane w temacie kolegi Mariuis'a cin.clear() i cin.sync(). Poprawiło się to że program nie blokuje się. Ale dalej:
#1. program wykonuje wszystko cacy jeśli wybierać 1-5.
#2. program po uruchomieniu na czysto przy próbie oszustwa i podaniu głupot pokazuje "nic z menu" ale poddaje dalej go próbie czy wybór nie jest literą
else
cout << "Nic z menu";
if( isalpha( wybor ) )
{
cout << ", na dodatek to nie cyfry";
getch();
}
co ma spowodować "Dopisanie" do komunikatu "Nic z menu"+", na dodatek to nie cyfry".
Po wprowadzeniu litery nie działa. pokazuje się jedynie "Nic z menu".
#3. program sprawdza wybujałym if'em wybór:
if( !isalpha( wybor ) &&( wybor == 1 || wybor == 2 || wybor == 3 || wybor == 4 || wybor == 5 ) )
po uruchomieniu na czysto przy próbie oszustwa i podaniu głupot innych niż to co z menu czyli np "123" pokazuje po sprawdzeniu i działa wspomniany else->"nic z menu"... ale głupoty zaczynają się pojawiać kiedy wprowadzam "1234". niby nic wielkiego ale "122" czy "1234" daje inny wynik niż "123". Zadziwiające.
Jaka jest różnica analizowania przez komputer wprowadzenia "444" vs "666"???
#4. Problem jak u kolegi Mariuis'a który po dodaniu cin clearów nie znika
mianowicie po pierwszym uruchomieniu i podaniu cyfry 1-4 (5-wyjście) program pokazuje wybór. następny wprowadzony wybór jest literą dla oszustwa i pokazuje ostatni wybór.
hmm... no nie wiem jak to prościej opisać.
Nie szukam przepisu "tak ma wyglądać kod i koniec", bo faktycznie na forum jest kilka razy zaprezentowany przez kolegów. Napisany od podstaw poza pauzą i tym liczeniem cykli(z cplusplus ripp). Szukam raczej gdzie zbłądziłem w rozumowaniu.
Dlaczego po pierwszym wyborze 1-4 kolejny wybór "literowy" wykonuje ostatni 'case'? Co pamięta, że wybór wcześniej miał wartość konkretną. Czy cin << ma jakiś stos czy coś? Wpisując w wybór cyfry(liczby.. 6,7,8 itd do 123(122 daje inny wynik dlaczego?)) podobnie.
Jeśli wpisze 123 wyświetla "nic z menu". dalej wybór litera... powtórka
Jeśli wpisze 1234 wyświetla "nic z menu i to nie cyfry" dalej wybór litera ... powtórka ale tego drugiego wyboru.
błądzę w ciemnościach.