Pętla do ... while - zadanie domowe.
Ostatnio zmodyfikowano 2011-07-01 18:14
asia97 Temat założony przez niniejszego użytkownika |
Pętla do ... while - zadanie domowe. » 2011-07-01 17:19:37 To moje początki oraz pierwszy temat na forum więc proszę o wyrozumiałość :) . Otóż mam problem z zadaniem: 'Napisz prosty kalkulator, który będzie potrafił dodawać, odejmować, mnożyć i dzielić. Program ten ma działać następująco: 1. Wypisuje obecny wynik 2. Wprowadź liczbę 3. Wybierz działanie (jeżeli liczba różna od 0) 4. Wykonaj obliczenia (jeżeli liczba różna od 0) 5. Wróć do kroku 1. 6. Jeżeli wprowadzoną liczbą jest 0, zakończ program.' Oto mój kod: #include <iostream> int main() { int liczba1; int liczba2; int numer; int wynik; do { std::cout << "[1] Dodawanie" << std::endl; std::cout << "[2] Odejmowanie" << std::endl; std::cout << "[3] Mnozenie" << std::endl; std::cout << "[4] Dzielenie" << std::endl; std::cout << "[5] Rezygnuj" << std::endl; std::cin >> numer; switch( numer ) { case 1: { std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba1; std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba2; wynik = liczba1 + liczba2; std::cout << "wynik: " << wynik; break; } { case 2: std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba1; std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba2; wynik = liczba1 - liczba2; std::cout << "wynik: " << wynik; break; } { case 3: std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba1; std::cout << "Podaj liczbe:" << std::endl; std::cin >> liczba2; wynik = liczba1 * liczba2; std::cout << "wynik: " << wynik; break; } { case 4: std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba1; std::cout << "Podaj liczbe: " << std::endl; std::cin >> liczba2; if( liczba2 == 0 ) std::cout << "Dzielnik nie moze byc zerem!"; else; wynik = liczba1 / liczba2; std::cout << "wynik: " << wynik; break; } } } while( liczba1 == 0 ); return 0; } I teraz tak: Kalkulator radzi sobie z liczeniem, ale po wykonaniu obliczenia się kończy. Co muszę dopisać żeby program wrócił na sam początek ? I jeszcze jedno. Czy zmienna bool musi znajdować się po każdej linijce 'std::cin >> liczba1;' i ' std::cin >> liczba2;' żeby liczby były zabezpieczone ? Z góry dziękuję za pomoc i pozdrawiam :) |
|
SeaMonster131 |
» 2011-07-01 17:24:30 Kalkulator radzi sobie z liczeniem, ale po wykonaniu obliczenia się kończy |
masz tak: do { } while( liczba1 == 0 ); Więc możesz sobie to tak przetłumaczyć: rob { } dopoki( liczba1 == 0 ); Więc pętla bd sie wykonywać, kiedy wprowdzona liczba to 0 :) |
|
Dawidsoni |
» 2011-07-01 17:30:52 Zrobiłeś głupi błąd. Pętla ma się wykonywać DO PUKI liczba jest RÓŻNA od zera, a nie równa zero. Czyli zamiast liczba1==0, napisz liczba1!=0. Instrukcje: podaj 1 liczbę i 2 liczbę mogłeś umieścić przed case 1,2... . (nie jest to błąd, ale strata czasu). W case 1,2... wystarczy tylko np.: wynik = liczba1 + liczba2. Kod umieszczaj w [ cpp ] [/cpp] |
|
asia97 Temat założony przez niniejszego użytkownika |
» 2011-07-01 17:47:01 Poprawiłam :) a jak będzie z tym zabezpieczeniem kalkulatora ? |
|
szyx_yankez |
» 2011-07-01 17:59:14 Prościej byłoby gdybyś liczby wprowadzała przed "switch'em" a nie w każdym "case".
Wtedy wystarczyło by tylko raz sprawdzić poprawność wprowadzonych danych. |
|
asia97 Temat założony przez niniejszego użytkownika |
» 2011-07-01 18:08:41 Dziękuję bardzo za pomoc :) Temat można zamknąć. |
|
szyx_yankez |
» 2011-07-01 18:14:00 Autor tematu też ma możliwość zamykania. |
|
« 1 » |