Logiczne "LUB" w kalkulatorze

0

Mama pytanie. Chcę aby w dzieleniu przy wpisaniu 0 obojętnie czy do a czy b wyświetlało "Nie dzieli się....". Nie wiem czemu po skompilowaniu pokazuje to tylko przy wpisaniu dwóch 0.

{
    string znak;
    double a;
    double b;

    cout << "Prosze podac znak arytmetyczny +,-,*,/: ";
    cin >> znak;
    cout << "Prosze podac pierwsza liczbe: ";
    cin >> a;
    cout << "Prosze podac druga liczbe: ";
    cin >> b;

    if (znak == "+") {
        cout << "Suma liczb wynosi: " << a + b << endl;
    }
    else if (znak == "-") {
        cout << "Roznica liczb wynosi: " << a - b << endl;
    }
    else if (znak == "*") {
        cout << "Iloczyn liczb wynosi: " << a * b << endl;
    }
    else if (znak == "/")
        if (a!=0 || b!=0){
        cout << "Iloraz liczb wynosi: " << a / b << endl;
        }
        else if (a==0 || b==0){
                while (a==0 || b==0) {
            cout << "Nie dzieli sie przez 0!!!" << endl;
            cout << "Prosze podac ponownie pierwsza liczbe: ";
            cin >> a;
            cout << "Prosze podac ponownie druga liczbe: ";
            cin >> b;
        }
    }
}
4

Ale przecież to nie ma sensu co robisz. Można dzielić 0/B o ile B =! 0. Twoje warunki nijak się do tego mają.

if (a!=0 || b!=0){
        cout << "Iloraz liczb wynosi: " << a / b << endl;
        }

Ten warunek jest spełniony dla b == 0 bo wystarczy ze a!=0 więc dzielisz przez zero.
I dalej niżej też masz while bez sensu.

Mam wrażenie że nie rozumiesz co to jest || a co to jest && albo nie rozumiesz kiedy dzielenie ma sens. Normalna logika to:

if(b==0){
    // phail
}else{
    a/b;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1