C++ zabezpieczenia przed Yeti - litera zamiast cyfry.
Ostatnio zmodyfikowano 2016-01-02 22:28
czareekk Temat założony przez niniejszego użytkownika |
C++ zabezpieczenia przed Yeti - litera zamiast cyfry. » 2016-01-02 22:00:34 Witam. Piszę zadanie domowe z lekcji i pętli do...while. Napisałem taki oto kod: #include <iostream> #include <cstdio> using namespace std; int main() { int wybor; float a; float b;
cozrobic: cout << " =====================" << endl; cout << " = Co chcesz zrobic? =" << endl; cout << " =====================" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Potengowanie" << endl; cout << "[6] Wyjscie" << endl; cin.clear(); cin.sync(); cin >> wybor; if( cin.fail() ) { goto cozrobic; } else { switch( wybor ) { case 1: cout << "Podaj liczbe pierwsza: "; cin >> a; cout << "Podaj liczbe druga: "; cin >> b; cout << "Wynik to: " << a + b << endl; goto cozrobic; break; case 2: cout << "Podaj liczbe pierwsza: "; cin >> a; cout << "Podaj liczbe druga: "; cin >> b; cout << "Wynik to: " << a - b << endl; goto cozrobic; break; case 3: cout << "Podaj liczbe pierwsza: "; cin >> a; cout << "Podaj liczbe druga: "; cin >> b; cout << "Wynik to: " << a * b << endl; goto cozrobic; break; case 4: cout << "Podaj liczbe pierwsza: "; cin >> a; cout << "Podaj liczbe druga: "; cin >> b; cout << "Wynik to: " << a / b << endl; goto cozrobic; break; case 5: cout << "Podaj liczbe pierwsza: "; cin >> a; cout << "Wynik to: " << a * a << endl; goto cozrobic; break; case 6: return 0; break; default: cout << "Wybierz 1, 2, 3, 4, 5 lub 6" << endl; goto cozrobic; break; } }
return 0; }
I niby wszystko jest ok. Kalkulator liczy, gdy pokaże wynik działania wraca to momentu gdzie wybieram to działanie - czyli wszystko gra. Wszystko gra do póki ktoś nie zachce zamiast liczby całkowitej (bo używam zmiennej int) wpisać np. litery. Jednym z podpunktów zadania domowego było zabezpieczyć program przed właśnie czymś takim. Powie ktoś co robię źle lub po prostu co mam zrobić? |
|
BadBullPL |
» 2016-01-02 22:05:17 |
|
czareekk Temat założony przez niniejszego użytkownika |
» 2016-01-02 22:12:16 BadBullPL Bardzo pomogłeś... Dzięki! W tej lekcji nie jest napisane "co zrobić jeśli wprowadzone zostaną błędne dane" a "skąd wiedzieć, że wprowadzone zostały błędne dane". Odsyłanie do lekcji jest tak pomocne jak pisanie "Google nie gryzie", "Wygoogluj sobie" .
Ps. Czemu nie używać goto? |
|
BadBullPL |
» 2016-01-02 22:28:43 W tej lekcji nie jest napisane "co zrobić jeśli wprowadzone zostaną błędne dane" |
Jest napsiane. Trzeba czyścić strumień. Opakuj wczytywanie danych w pętle. Ps. Czemu nie używać goto? |
|
|
« 1 » |