Luteres Temat założony przez niniejszego użytkownika |
[Praca Domowa z rozdziału 15] Cofnięcie do początku programu. » 2014-05-10 22:13:23 Witam! (Kilka tematów odnośnie tej pracy domowej przeczytałem, lecz w żadnym z nich nie było mowy o moim problemie.. Kilka = nie wszystkie) Próbuję właśnie napisać kalkulator do pracy domowej nr 2 z rozdziału 15. Póki co stworzyłem coś takiego: #include <iostream> using namespace std; int main() { float wynik = 0; int menu; float liczba; cout << "=============== Kalkulator Adama! ===============" << endl << endl; do { cout << "Aktualny wynik: " << wynik << endl << endl; cout << "Wprowadz liczbe: "; cin >> liczba; cin.clear(); cin.sync(); if( liczba == 0 ) do { cout << "Wprowadz inna liczbe niz zero!: "; cin >> liczba; cin.clear(); cin.sync(); } while( liczba == 0 ); cout << endl << "[1] Dodawanie" << endl << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnuj" << endl << endl; cout << "Wybierz dzialanie: "; cin >> menu; cout << endl; if( liczba != 0 ) switch( menu ) { case 1: cout << "Wynik + liczba = " << wynik + liczba << endl; wynik = wynik + liczba; break; case 2: cout << "Wynik - liczba = " << wynik - liczba << endl; wynik = wynik - liczba; break; case 3: cout << "Wynik * liczba = " << wynik * liczba << endl; wynik = wynik * liczba; break; case 4: cout << "Wynik / liczba = " << wynik / liczba << endl; wynik = wynik / liczba; break; case 5: return 0; } } while( liczba != 0 ); return 0; } Polecenie brzmi: "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. Przykładowe menu wyboru działania: [1] Dodawanie [2] Odejmowanie [3] Mnożenie [4] Dzielenie [5] Rezygnuj " Z tego polecenia wnioskuję, iż "Rezygnuj" ma cofać do kroku nr 1, a nie mogę wpaść jak to ma się dziać. Trzeba zrobić dosyć dużą pętlę, czy inaczej? Czy mogę liczyć na wskazówki? Bawię się z tym już dłuższy czas, ale mam ograniczony dostęp do komputera (czas) i wolę zasięgnąć rady. |
|
OSA_PL |
» 2014-05-10 22:56:36 Daj samo break; w case 5: |
|
Luteres Temat założony przez niniejszego użytkownika |
» 2014-05-10 23:02:39 Czasem najciemniej pod latarnią, dziękuję i przepraszam za kłopot. |
|
Luteres Temat założony przez niniejszego użytkownika |
Zakończenie pętli do... while » 2014-05-11 18:29:09 #include <iostream> using namespace std; int main() { float wynik = 0; int menu; float liczba; bool czyblad; cout << "=============== Kalkulator Adama! ===============" << endl << endl; do { cout << "Aktualny wynik: " << wynik << endl << endl; cout << "Wprowadz liczbe: "; cin >> liczba; czyblad = cin.fail(); cin.clear(); cin.sync(); if( czyblad || liczba == 0 ) do { cout << "Wprowadz poprawna liczbe!: "; cin >> liczba; cin.clear(); cin.sync(); czyblad = cin.fail(); cin.clear(); cin.sync(); } while( czyblad || liczba == 0 ); cout << endl << "[1] Dodawanie" << endl << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnuj" << endl << endl << "[0] Zakoncz" << endl << endl; do { cout << "Wybierz dzialanie: "; cin >> menu; czyblad = cin.fail(); cin.clear(); cin.sync(); } while( czyblad &&( menu >= 0 ) &&( menu <= 5 ) ); switch( menu ) { case 1: cout << "Wynik + liczba = " << wynik + liczba << endl; wynik += liczba; break; case 2: cout << "Wynik - liczba = " << wynik - liczba << endl; wynik -= liczba; break; case 3: cout << "Wynik * liczba = " << wynik * liczba << endl; wynik *= liczba; break; case 4: cout << "Wynik / liczba = " << wynik / liczba << endl; wynik /= liczba; break; case 5: break; case 0: return 0; } } while( liczba != 0 || czyblad ); return 0; }
Witam! Znowu problem z tym samym kalkulatorem (po małych modyfikacjach), otóż w części: do { cout << "Wybierz dzialanie: "; cin >> menu; czyblad = cin.fail(); cin.clear(); cin.sync(); } while( czyblad &&( menu >= 0 ) &&( menu <= 5 ) ); po wpisaniu litery w "wybierz działanie" działa tak jak trzeba, ale po wpisaniu liczby innej niż 0/1/2/3/4/5 zamiast kręcić się od nowa przenosi do wpisania liczby. Co tym razem spaprałem? |
|
pekfos |
» 2014-05-11 18:34:29 Warunek, a co niby innego? czyblad = false, liczba spoza przedziału. Jaka będzie wartość całego warunku wtedy..? |
|
Luteres Temat założony przez niniejszego użytkownika |
» 2014-05-11 18:43:18 Będzie dodatnia, czyli dać negację?
EDIT: Ok, po dodaniu negacji zrobiło się na odwrót (w sumie czego innego się spodziewałem), więc nie trafiłem. |
|
pekfos |
» 2014-05-11 18:54:44 To teraz z logicznym myśleniem. Pętla ma się powtarzać, gdy "(wystąpił błąd) lub (liczba jest spoza przedziału)". |
|
Luteres Temat założony przez niniejszego użytkownika |
» 2014-05-11 18:57:49 Ok, dzięki, od początku mylę to while, gdyż w Kursie jest napisane, że we while wpisuje się warunek zakończenia, a nie powtórzenia i jakoś mi utkwiło to zakończenie i się zamotałem. } while( czyblad ||( menu <= 0 ) ||( menu >= 5 ) ); Teraz działa :) EDIT: } while( czyblad ||( menu < 0 ) ||( menu > 5 ) ); Teraz działa. |
|
« 1 » |