Przechodzenie do kolejnej części kalkulatora
Ostatnio zmodyfikowano 2017-01-05 18:23
HudyWeas Temat założony przez niniejszego użytkownika |
» 2017-01-05 17:42:48 Po poprawkach cały program wygląda tak. Po zastosowaniu twoich zmian nagle zaczęło wszystko działać. usunąłem zbędne dane z int. Dałoby się to jeszcze bardziej uprościć? #include <iostream> using namespace std; int main() { int a, b, wynik, znak; do { cout << "Podaj liczbe a: " << endl; cin >> a; cout << "Podaj liczbe b: " << endl; cin >> b; } while( a == 0 || b == 0 ); cout << "Wybierz dzialanie:" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Koniec" << endl; cin >> znak; switch( znak ) { case 1: { wynik = a + b; cout << "a + b = " << wynik << endl; break; } case 2: { wynik = a - b; cout << "a - b = " << wynik << endl; break; } case 3: { wynik = a * b; cout << "a * b = " << wynik << endl; break; } case 4: { wynik = a / b; cout << "a / b = " << wynik << endl; break; } case 5: { return 0; } default: cout << "Zly znak" << endl; break; } do { do { cout << "Wynik: " << wynik << endl; cout << "Podaj liczbe b: " << endl; cin >> b; } while( b == 0 ); cout << "Wybierz dzialanie:" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Koniec" << endl; cin >> znak; switch( znak ) { case 1: { wynik = wynik + b; cout << "wynik + b = " << wynik << endl; break; } case 2: { wynik = wynik - b; cout << "wynik - b = " << wynik << endl; break; } case 3: { wynik = wynik * b; cout << "wynik * b = " << wynik << endl; break; } case 4: { wynik = wynik / b; cout << "wynik / b = " << wynik << endl; break; } case 5: { return 0; } default: cout << "Zly znak" << endl; break; } } while( wynik != 0 ); return 0; } |
|
karambaHZP |
» 2017-01-05 17:48:28 Nie wiem po co są w kodzie dwie instrukcje switch . Przy pobraniu liczb od użytkownika nie musisz sprawdzać obu liczb. Wystarczy, że druga będzie różna od zera (dzielenie przez zero). Poza tym nawet to można pominąć i sprawdzić dzielnik przed wykonaniem dzielenia i w przypadku dzielnika równego zero pominąć dzieleni oraz wypisać stosowny komunikat. Można lepiej nazwać zmienne. |
|
HudyWeas Temat założony przez niniejszego użytkownika |
» 2017-01-05 18:05:37 Pierwsza instrukcja switch jest do pierwszej części kalkulatora. Składa się on z 2 części. Pierwsza to utworzenie wyniku. Potrzeba nam do tego 2 liczb. W 2 części następuje dopisywanie do aktualnego wyniku. Nie wiem jak zrobić to przy 1 komendzie switch , ponieważ musiałbym jakoś przy pierwszym obliczeniu wykluczyć wynik , a przy drugim i kolejnych obliczeniach a . Uważam, że może i sprawdzanie a nie jest wymagane, ale dzięki temu nie wychodzi 0 + 100 = 100. Powinno to wyglądać tak? int a, b, wynik, znak; do { cout << "Podaj liczbe a: " << endl; cin >> a; cout << "Podaj liczbe b: " << endl; cin >> b; cout << "Wybierz dzialanie:" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Koniec" << endl; cin >> znak; if( b == 0 ) cout << "Blad, nie dziel przez 0" << endl; } while( b == 0 ); |
|
karambaHZP |
» 2017-01-05 18:17:55 0 + 100 = 100. Powinno to wyglądać tak? |
Co jest niepoprawnego dodawaniu do zera. Tylko dzielenie przez zero jest niepoprawne. ponieważ musiałbym jakoś przy pierwszym obliczeniu wykluczyć wynik |
Raczej z treści wynika, że zmienna wynik powinna mieć nadaną wartość początkową i wykonywać na tej zmiennej działania z użyciem wprowadzanej wartości. Ach i nie ma w programie zabezpieczenia. |
|
HudyWeas Temat założony przez niniejszego użytkownika |
» 2017-01-05 18:23:11 A co do zabezpieczeń brakuje mi chyba tylko na tekst zamiast liczb |
|
1 « 2 » |