Zadanie 2 - pętla do...while (kalkulator)
Ostatnio zmodyfikowano 2014-06-19 12:51
Haryen Temat założony przez niniejszego użytkownika |
Zadanie 2 - pętla do...while (kalkulator) » 2014-06-18 16:40:37 Cześć! Wykonałem zadanie 2 z pętli do..while. Treść: 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. Zabezpiecz wcześniej napisany kalkulator przed podawaniem niepoprawnych liczb i operacji. Wykorzystaj wiedzę zdobytą z pierwszego zadania pracy domowej niniejszego rozdziału. Zabezpiecz również w analogiczny sposób przed możliwością wyboru nieprawidłowego działania. #include <iostream> #include <windows.h>
using namespace std;
int main() { int wybor; double liczba, wynik = 0; do { cout << "Obecny wynik: " << wynik << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; cout << endl; cout << "Podaj liczbe: "; while( !( cin >> liczba ) ) { cerr << "Zly znak!" << endl; cout << "Podaj prawidlowa liczbe: "; cin.clear(); cin.sync(); } if( liczba == 0 ) { system( "cls" ); cout << "Do widzenia!" << endl; exit( 0 ); } cout << "Wybierz dzialanie: "; while( !( cin >> wybor ) ) { cerr << "Zly znak!" << endl; cout << "Wybierz jeszcze raz "; cin.clear(); cin.sync(); } switch( wybor ) { case 1: { wynik += liczba; break; } case 2: { wynik -= liczba; break; } case 3: { wynik *= liczba; break; } case 4: { wynik /= liczba; break; } case 5: { system( "cls" ); cout << "Do widzenia" << endl; exit( 0 ); } default: { cout << "Zly wybor!" << endl; break; } } system( "cls" ); } while( liczba != 0 ); return 0; }
Mam pytanie. Tak naprawdę to ten *if sprawdza czy wpisano 0. Jeśli tak, to on kończy pętlę. Jeśli nie byłoby tego if'a, to nawet jeżeli wpisałbym 0, to pętla skończy się dopiero, kiedy "dojdzie" do miejsca, gdzie jest warunek. Da się to jakoś zrobić czy trzeba użyć pętli while? |
|
pekfos |
» 2014-06-18 16:50:07 Da się to jakoś zrobić czy trzeba użyć pętli while? |
Co zrobić..? |
|
Haryen Temat założony przez niniejszego użytkownika |
» 2014-06-18 17:03:50 Żeby bez tego if'a pętla po wpisaniu 0 zakończyła się od razu. |
|
Jacob99 |
» 2014-06-18 17:25:54 A po co chcesz rezygnować z tego if'a ? |
|
Haryen Temat założony przez niniejszego użytkownika |
» 2014-06-18 17:49:12 Chcę się dowiedzieć czy są inne sposoby na to, ale chyba ten if jest najlepszym wyborem. |
|
pekfos |
» 2014-06-19 10:00:01 Da się to jakoś zrobić czy trzeba użyć pętli while? |
A samą pętlą while się da..? Żadna pętla sama z siebie nie sprawdzi swojego warunku w trakcie wykonywania powiązanych z nią instrukcji. Od tego są warunki if itp i tyle. I nie używaj exit(), chyba że na prawdę są ku temu powody. Tu możesz bez problemu zakończyć pętlę przez break lub return. |
|
Haryen Temat założony przez niniejszego użytkownika |
» 2014-06-19 11:34:06 Ok, dzięki. A powiesz dlaczego nie używa się exit? |
|
pekfos |
» 2014-06-19 12:04:50 Nie powoduje zniszczenia zmiennych automatycznych. |
|
« 1 » 2 |