
//
// Przykładowy kod z rozdziału 6.3.1 "Pierwsza próba" książki
// "Programowanie. Teoria i praktyka z wykorzystaniem C++" Bjarne'a Stroustrupa.
//

#include "std_lib_facilities.h"

//------------------------------------------------------------------------------

int main()
try
{
    cout << "Wpisz wyrażenie (obsługujemy operatory +, –, * i /):  ";
    int lval = 0;
    int rval;
    char op;
    cin>>lval;               // Wczytywanie pierwszego argumentu wyrażenia z lewej.
    if (!cin) error("Na początku nie ma argumentu wyrażenia.");
    while (cin>>op) {        // Wczytywanie operatora i prawego argumentu wyrażenia na zmianę.
        cin>>rval;
        if (!cin) error("Nie ma drugiego argumentu wyrażenia.");
        switch(op) {
        case '+':
            lval += rval;    // Dodawanie: lval = lval + rval
            break;
        case '-':
            lval -= rval;    // Odejmowanie: lval = lval – rval
            break;
        case '*':
            lval *= rval;    // Mnożenie: lval = lval * rval
            break;
        case '/':
            lval /= rval;    // Dzielenie: lval = lval / rval
            break;
        default:             // Koniec operatorów — drukowanie wyniku.
            cout << "Wynik: " << lval << '\n';
            keep_window_open();
            return 0;
        }
    }
    error("Nieprawidłowe wyrażenie.");
}
catch (exception& e) {
    cerr << "Błąd: " << e.what() << '\n'; 
    return 1;
}
catch (...) {
    cerr << "Nieznany wyjątek!\n"; 
    return 2;
}

//------------------------------------------------------------------------------
