rozdział 15 zadanie domowe
Ostatnio zmodyfikowano 2021-03-20 14:42
mateuszuczen Temat założony przez niniejszego użytkownika |
rozdział 15 zadanie domowe » 2021-03-19 12:12:57 cześć mam problem zwiazany z kalkulatorem , działanie ( Prawie ) prawidłowe . Problem w tym że gdy podaje wartość drugiej liczby 0 nie mogę ponownie wybrać wartości czyli petla nie dziala w tym przypadku. Dopiero zadziała gdy wpiszę jakąkolwiek cyfrę i potwierdze enterem, drugi problem związany z petla jest w momencie gdy wybieram działanie ( chciałbym wyjśc z programu - pojawia sie komunikat koniec programu po czym ponownie moge wybrać wartości a i b. tak samo w przypadku podania 0 dla działania jak i innej cyfry z pomienieciem 1-4. poprosze o wyjasnienie jak zrobic zeby program sie wyłaczył #include <iostream> using namespace std; int main() { int a, b, dzialanie; do { cout << " Podaj a = "; cin >> a; cout << " Podaj b = "; cin >> b; if( b != 0 ) cout << "Wybierz dzialanie [1]-DODAWANIE [2]-ODEJMOWANIE [3]-MNOZENIE [4]-DZIELENIE [5]-WYJSCIE" << endl; else cout << "sproboj ponownie" << endl; cin >> dzialanie; switch( dzialanie ) { case 1: cout << " a + b = " << a + b << endl; break; case 2: cout << " a - b = " << a - b << endl; break; case 3: cout << " a * b = " << a * b << endl; break; case 4: cout << " a / b = " << a / b << endl; break; case 5: cout << "koniec programu" << endl; break; } } while( dzialanie != 5 || dzialanie != 0 ); return 0; }
|
|
pekfos |
» 2021-03-19 16:37:03 Problem w tym że gdy podaje wartość drugiej liczby 0 nie mogę ponownie wybrać wartości czyli petla nie dziala w tym przypadku. Pętla działa, bo wykonuje dokładnie to co do niej wpiszesz, czyli więcej rzeczy po tym jak podajesz zero. Powinieneś użyć dodatkowej pętli na potrzeby samego wpisywania liczby b. Przykładowo cout << " Podaj b = "; do { cin >> b; if( b == 0 ) cout << "sproboj ponownie" << endl; } while( b == 0 );
drugi problem związany z petla jest w momencie gdy wybieram działanie ( chciałbym wyjśc z programu - pojawia sie komunikat koniec programu po czym ponownie moge wybrać wartości a i b. tak samo w przypadku podania 0 dla działania jak i innej cyfry z pomienieciem 1-4. poprosze o wyjasnienie jak zrobic zeby program sie wyłaczył while( dzialanie != 5 || dzialanie != 0 );
Program się nie kończy, bo ten warunek jest zawsze prawdziwy - spróbuj znaleźć liczbę która jest równa 5 i jednocześnie równa 0. Warunek powinien brzmieć jeśli liczba jest różna od 5 i różna od 0. |
|
mateuszuczen Temat założony przez niniejszego użytkownika |
» 2021-03-20 14:42:29 Super , dzieki za odp . już rozumiem , dopisałem jeszcze funkcje cin.clear() i cin.ignore() aby program się nie wyłączał po błędnym wpisaniu wartości . Dodatkowo dopisałem cin.fail i bool blad po cin >> a i cin >> b aby program wykazywał bład wartosci. Powolutku do przodu ! |
|
« 1 » |