Lekcja 15 - zadanie nr 2
Ostatnio zmodyfikowano 2012-07-17 08:23
Tomio Temat założony przez niniejszego użytkownika |
Lekcja 15 - zadanie nr 2 » 2012-07-10 18:12:15 Witam, Prosiłbym o sprawdzenie mojego kodu na kalkulator:) Gdzie i jak umieścić pętle która na cyfrę 0 bedzię kończyć program?:) Pozdro # include <iostream> # include <cstdio> using namespace std; int main() { int d, wynik; float a, b; wynik = 0; do { cout << "Obecny wynik: " << wynik << endl << endl; cout << "podaj pierwsza liczbe :"; cin >> a; bool spr1 = cin.good(); if( spr1 == false ) do { cout << "Nie podales liczby!" << endl; cout << "podaj pierwsza liczbe :"; cin.clear(); cin.sync(); cin >> a; spr1 = cin.good(); } while( !spr1 ); cout << "Podaj druga liczbe :"; cin.clear(); cin.sync(); cin >> b; bool spr2 = cin.good(); if( spr2 == false ) do { cout << "Nie podales liczby!" << endl; cout << "Podaj druga liczbe :"; cin.clear(); cin.sync(); cin >> b; spr2 = cin.good(); } while( !spr2 ); cout << "Oto Menu działan." << endl << "[1] Dodawanie" << endl << "[2] Odejmowanie" << endl << "[3] Mnozenie" << endl << "[4] Dzielenie" << endl << "[5] Rezygnuj" << endl; cout << "Wybierz numer dzialania z listy, ktore cie interesuje :" << endl; cin.clear(); cin.sync(); cin >> d; if( d > 5 ) do { cout << " Nie wybrales poprawnego dzialania z listy" << endl; cout << "Wybierz numer dzialania z listy, ktore cie interesuje :" << endl; cin.clear(); cin.sync(); cin >> d; } while( d > 5 ); switch( d ) { case 1: wynik = a + b; cout << " Wybrales dodwanie :" << wynik << endl; break; case 2: wynik = a - b; cout << " Wybrales odejmowanie :" << wynik << endl; break; case 3: wynik = a * b; cout << " Wybrales mnozenie :" << wynik << endl; break; case 4: wynik = a / b; cout << " Wybrales dzielenie :" << wynik << endl; break; case 5: cout << "Rezygnujesz z liczenia. Koniec"; break; } } while( d < 5 ); return 0; }
|
|
jankowalski25 |
» 2012-07-10 19:32:53 |
|
pucio19 |
rozwiazanie » 2012-07-15 02:13:39 Mam problem z tym zadaniem również: #include <iostream> using namespace std; int main() { int wybor; float a, b; char z; bool ok = true; do { cout << "Wprowadz liczbe: " << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; cin >> wybor; do { if( wybor < 1 || wybor > 5 ) { cin.clear(); cin.sync(); cout << "Nie wprowadziles poprawnej liczby" << endl; cout << "Wprowadz liczbe: " << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; cin >> wybor; ok = cin.fail(); } } while( ok ); switch( wybor ) { case 1: cout << "Wprowadz dzialanie:" << endl; cin >> a; cin >> z; cin >> b; if( a != 0 && b != 0 ) cout << "Wynik dzialania: " <<( a + b ) << endl; break; case 2: cout << "Wprowadz dzialanie:" << endl; cin >> a; cin >> z; cin >> b; if( a != 0 && b != 0 ) cout << "Wynik dzialania: " <<( a - b ) << endl; break; case 3: cout << "Wprowadz dzialanie:" << endl; cin >> a; cin >> z; cin >> b; if( a != 0 && b != 0 ) cout << "Wynik dzialania: " <<( a * b ) << endl; break; case 4: cout << "Wprowadz dzialanie:" << endl; cin >> a; cin >> z; cin >> b; if( a != 0 && b != 0 ) cout << "Wynik dzialania: " <<( a / b ) << endl; break; case 5: a = 0; break; } } while( a != 0 && b != 0 ); return 0; }
Dlaczego nie zostaje wykonywana druga pedla zagniezdzona "do while"? |
|
xevuel |
» 2012-07-15 15:51:22 |
|
Sungrazer |
» 2012-07-16 17:41:41 Tomio - porównaj swój kod z przykładem podanym tutaj przez Netro: http://cpp0x.pl/forum/temat/?id=7574pucio19 - po pierwsze: daj instrukcję if przed rozpoczęciem pętli zamiast w środku, a po drugie: jako warunek zakończenia drugiej pętli masz tylko cin.fail() . Taki zapis powinien załatwić sprawę: while( ok || wybor < 1 || wybor > 5 ); |
|
Arni |
Pomoc » 2012-07-16 22:27:49 #include <iostream> #include <conio.h> #include <math.h> using namespace std; int main() { int dzialanie, a, b, wynik = 0; do { cout << "\tKalkulator\n"; cout << "\n ====================================\n"; cout << "Wynik wynosi: " << wynik; cout << "\nPodaj liczbe: "; cin >> a; cout << "Podaj liczbe: "; cin >> b; } while( a < 0 && b < 0 ); if( a != 0 && b != 0 ) { cout << "Wybierz dzialanie: \n [1] dodawanie \n [2] odejmowanie \n [3] mnozenie \n [4] dzielenie \n\n"; cin >> dzialanie; switch( dzialanie ) { { case 1: wynik = b + a; cout << "Wynik wynosi: " << wynik; } break; { case 2: wynik = a - b; cout << "Wynik wynosi: " << wynik; } break; { case 3: wynik = a * b; cout << "Wynik wynosi: " << wynik; } break; { case 4: wynik = a / b; cout << "Wynik wynosi: " << wynik; } break; { default: cout << "Nie umiesz czytac"; } break; } } else return 0; }
|
|
kubawal |
» 2012-07-17 08:23:31 Arni, nie podaje się całego kodu tylko jakieś rozwiązanie! W switch są źle klamry. Powinno być tak: switch( wybor ) { case '1': { break; } case '2': { break; } default: { cout << "Kup sobie okulary! Podałeś zły wybor.\n"; } }
Warunek wielokrotnego wyboru switch ... case |
|
« 1 » |