Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ zabezpieczenia przed Yeti - litera zamiast cyfry.

Ostatnio zmodyfikowano 2016-01-02 22:28
Autor Wiadomość
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()
{
C/C++
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ć?
P-142742
BadBullPL
» 2016-01-02 22:05:17
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja + pętla
Tak przy okazji nie używaj
goto
P-142743
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?
P-142744
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?
Frazy, które należy wpisać w wyszukiwarkę google:
P-142747
« 1 »
  Strona 1 z 1