Zapętlanie programu po wybraniu opcji spoza listy.
Ostatnio zmodyfikowano 2019-04-28 12:12
JogiMichu 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 #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(); }
|
|
rottingham |
» 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. |
|
pekfos |
» 2019-04-28 11:05:53 To nic nie robi. 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. |
|
JogiMichu 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. |
|
« 1 » |