Zapętlanie programu po wybraniu opcji spoza listy.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Zapętlanie programu po wybraniu opcji spoza listy.

AutorWiadomość
Temat założony przez niniejszego użytkownika
Zapętlanie programu po wybraniu opcji spoza listy.
» 2019-04-28 10:36:03
Bry dien! Jestem nowym użytkownikiem i mam rozkminę z zadaniem domowym z lekcji 14 - poziom1 - trzeba napisać prosty kalkulator na dwie liczby i cztery działania.

Dlaczego po wpisaniu w menu wyboru liczby z zakresu -1 do 1, np. 0.5 lub -0,5 program wpada w pętlę?

Edit: Problem występuje również po wpisaniu liczb 1.5, 2.5, 3.5, 4.5 w menu wyboru działania. Czy związane jest to z brakiem prawidłowego zabezpieczenia na wybór ograniczony tylko do liczb naturalnych (i to z zakresu 1-4)?


Kod poniżej
C/C++
#include <iostream>

using namespace std;



int main()
{
    int dzialanie, a, b;
    cout << "Wybierz dzialanie: " << endl <<
    "1. Dodawanie " << endl <<
    "2. Odejmowanie " << endl <<
    "3. Mnozenie " << endl <<
    "4. Dzielenie " << endl;
    cout << endl;
    cin >> dzialanie;
   
    if( 1 <= dzialanie && dzialanie <= 4 )
   
    {
       
       
        switch( dzialanie )
        {
        case 1:
            dzialanie == 1;
            cout << "------ Wybrano dodawanie ------" << endl;
            cout << "Podaj pierwsza liczbe" << endl;
            cin >> a;
            cout << "Podaj druga liczbe" << endl;
            cin >> b;
           
            cout << "Suma: " << a << " + " << b << " = " << a + b << endl;
            break;
           
        case 2:
            dzialanie == 2;
            cout << "------ Wybrano odejmowanie ------" << endl;
            cout << "Podaj pierwsza liczbe" << endl;
            cin >> a;
            cout << "Podaj druga liczbe" << endl;
            cin >> b;
           
            cout << "Roznica: " << a << " - " << b << " = " << a - b << endl;
            break;
           
        case 3:
            dzialanie == 3;
            cout << "------ Wybrano mnozenie ------" << endl;
            cout << "Podaj pierwsza liczbe" << endl;
            cin >> a;
            cout << "Podaj druga liczbe" << endl;
            cin >> b;
           
            cout << "Iloczyn: " << a << " * " << b << " = " << a * b << endl;
            break;
           
        case 4:
            dzialanie == 4;
            cout << "------ Wybrano dzielenie ------" << endl;
            cout << "Podaj pierwsza liczbe" << endl;
            cin >> a;
            cout << "Podaj druga liczbe" << endl;
            cin >> b;
           
            cout << "Iloraz: " << a << " / " << b << " = " << a / b << endl;
            break;
           
        }
       
    }
   
    else
    cout << "Wybrano niepoprawne dzialanie! " << endl <<
         "Dostepny zakres 1-4! " << endl;
   
   
    cout << endl << endl;
   
   
   
    return main();
}
P-174535
» 2019-04-28 10:40:48
W warunku wielokrotnego wyboru nie potrzebujesz operatora porównania
dzialanie == 1;
.
Wystarczy Tobie sam
case 1:
 - w tym momencie ustalasz przy jakiej wartości wykona się dany case.
P-174536
» 2019-04-28 11:05:53
C/C++
dzialanie == 1;
To nic nie robi.

C/C++
return main();
Wywołanie rekurencyjne funkcji main() jest błędne w C++. A nawet gdyby nie było, użycie rekurencji zamiast pętli jest błędne samo w sobie. Pierwszą pętlę masz omówioną w następnej lekcji. To zadanie nie wymaga zapętlania programu w jakikolwiek sposób.
P-174537
Temat założony przez niniejszego użytkownika
» 2019-04-28 12:12:15
@ pekfos użyłem rekurencję "na chłopski" rozum tylko po to, żeby można było sprawdzić ciągiem wszystkie 4 opcje bez wychodzenia z konsoli- to jedyny sposób jaki wpadł mi do głowy ;) rozumiem, że zapis jest niepoprawny.

@ rottingham faktycznie, zapewne muszę wrócić do poprzednich działów, żeby lepiej przyswoić informacje.
P-174539
« 1 »
 Strona 1 z 1