Lekcja 15 - kalkulator
Ostatnio zmodyfikowano 2012-06-08 12:23
Berux Temat założony przez niniejszego użytkownika |
Lekcja 15 - kalkulator » 2012-06-06 22:32:05 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>
using namespace std;
int main()
{ int a, b, dzialanie; do { cout << "Podaj pierwsza liczbe: "; cin >> a; cout << "Podaj druga liczbe: "; cin >> b; cout << "Jakie dzialanie chcesz wykonac?" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj " << endl; cin >> dzialanie; if( dzialanie == 1 ) cout << a << " + " << b << " = " << a + b << endl; if( dzialanie == 2 ) cout << a << " - " << b << " = " << a - b << endl; if( dzialanie == 3 ) cout << a << " * " << b << " = " << a * b << endl; if( dzialanie == 4 ) cout << a << " / " << b << " = " << a / b << endl; if( dzialanie == 5 ) cout << "Koniec" << endl; if(( a == 0 || b == 0 ) && dzialanie == 3 ) cout << a << " * " << b << " = 0" << endl; if(( a == 0 || b == 0 ) && dzialanie == 4 ) cout << a << " / " << b << " = 0" << endl; if( dzialanie < 1 || dzialanie > 5 ) cout << "Nie ma takiej opcji w menu." << endl; } while( dzialanie < 1 || dzialanie > 5 ); return 0; } Po skompilowaniu programu i uruchomieniu oraz po wpisaniu liczby 1,następnie 2, a w działaniu wybranie mnożenia kod : if( dzialanie == 3 ) cout << a << " * " << b << " = " << a * b << endl; wykonuje się dwa razy. Dziwne jest też to, że po wpisaniu lizcby 1,następnie 2 i wybranie dzielenia to kod: if(( a == 0 || b == 0 ) && dzialanie == 4 ) cout << a << " / " << b << " = 0" << endl; nie wykonuje się, a na pulpicie pokazuje się okienko o treści : Program zad2.exe przestał działać... Co jest nie tak.Z góry dziękuję za odpowiedź. |
|
jsc |
» 2012-06-06 23:00:15 |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-06 23:01:14 Nie rozumiem. |
|
jsc |
» 2012-06-06 23:06:28 Poprzednie to były głupoty. Powiedz mi o co chodzi z tą konstrukcją: do { cin >> a; cin >> b; cin >> dzialanie; if( dzialanie == 3 ) cout << a << " * " << b << " = " << a * b << endl; if(( a == 0 || b == 0 ) && dzialanie == 3 ) cout << a << " * " << b << " = 0" << endl; if( dzialanie == 4 ) cout << a << " / " << b << " = " << a / b << endl; if(( a == 0 || b == 0 ) && dzialanie == 4 ) cout << a << " / " << b << " = 0" << endl; } while( dzialanie < 1 || dzialanie > 5 );
To co wyciąłem jest dla problemu raczej nieistotne. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-06 23:16:27 Już rozumiem. Kod: #include <iostream>
using namespace std;
int main()
{ int a, b, dzialanie; do { cout << "Podaj pierwsza liczbe: "; cin.sync(); cin.clear(); cin >> a; cout << "Podaj druga liczbe: "; cin.sync(); cin.clear(); cin >> b; cout << "Jakie dzialanie chcesz wykonac?" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj " << endl; cin.sync(); cin.clear(); cin >> dzialanie; if( dzialanie == 1 ) cout << a << " + " << b << " = " << a + b << endl; if( dzialanie == 2 ) cout << a << " - " << b << " = " << a - b << endl; if( dzialanie == 3 && a > 0 && b > 0 ) cout << a << " * " << b << " = " << a * b << endl; if( dzialanie == 4 && a > 0 && b > 0 ) cout << a << " / " << b << " = " << a / b << endl; if( dzialanie == 5 ) cout << "Koniec" << endl; if(( a == 0 || b == 0 ) && dzialanie == 3 ) cout << a << " * " << b << " = 0" << endl; if(( a == 0 || b == 0 ) && dzialanie == 4 ) cout << a << " / " << b << " = 0" << endl; if( dzialanie < 1 || dzialanie > 5 ) cout << "Nie ma takiej opcji w menu." << endl; } while( dzialanie < 1 || dzialanie > 5 ); return 0; }
Temat zamykam. I dzięki za poświęcenie czasu. |
|
f0g |
» 2012-06-07 14:46:19 Nie lepiej zastosować switch...case zamiast if'ów? |
|
Berux Temat założony przez niniejszego użytkownika |
» 2012-06-07 16:17:06 Próbowałem ale nie wiem jak to zrobić. Z resztą zadanie chyba rozwiązane poprawnie? |
|
jsc |
» 2012-06-07 20:24:04 Nie bo działanie 3 i 4 chcesz wykonać 2 razy: - najpierw na chura bez sprawdzania warunków - później po sprawdzeniu warunku na wykonalność |
|
« 1 » 2 |