[Lekcja 17] Kalkulator
Ostatnio zmodyfikowano 2012-11-30 22:54
Precel Temat założony przez niniejszego użytkownika |
[Lekcja 17] Kalkulator » 2012-11-30 22:15:39 Prosiłbym o pomoc przy pracy domowej z zadania 17 otóż: #include <iostream> using namespace std; int main() { unsigned int a; unsigned int b; bool Dziala; char Dzialanie; do { cout << "Podaj pierwsza liczbe " << endl; cin >> a; Dziala = std::cin.good(); cin.clear(); cin.sync(); } while( Dziala != true ); do { cout << "Podaj druga liczbe " << endl; cin >> b; Dziala = std::cin.good(); cin.clear(); cin.sync(); } while( Dziala != true ); do { cout << "Co z tym teraz zrobic? " << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Wyjscie " << endl; cin >> Dzialanie; switch( Dzialanie ) { case 1: cout << a + b << endl; break; case 2: cout << a - b << endl; break; case 3: cout << a * b << endl; break; case 4: cout << a / b << endl; break; } } while( Dzialanie == 0 && Dzialanie == 5 ); cout << ":)" << endl; return 0; }
Na końcu, przy wpisywaniu byle czego, program sam się wyłącza, wie ktoś może w czym jest błąd? :) |
|
whiskas |
Coz » 2012-11-30 22:17:42 Dodaj bibloteke cstdlib i na koncu programu daj system("PAUSE"); lub daj całość programu do jakiejkolwiek pętli żeby kończyła się wraz z wpisaniem np 1 do odpowiedniej zmiennej. |
|
rafixxx25 |
» 2012-11-30 22:29:10 do{ }while( Dzialanie == 0 && Dzialanie == 5 ); Warunek na pewno jest niepoprawny(nie może być na raz liczbą 0 i 5) Nie za bardzo wiem, co chciałeś nim osiągnąć. Czy chciałeś, by ciągle można było wykonywać operacje(dodawanie, potem mnożenie itd.), aż do naciśnięcia 0 lub 5?
Jeśli w switchu sprawdzasz zmienną typu char, a nie liczbową, to w casach musisz użyć ' ' (ponieważ to nie liczba, tylko znak). np: case '1': cout << a + b << endl; break; case '2': cout << a - b << endl; break;
Na końcu użyj sobie jakieś funkcji, która sprawi, że program będzie czekał (np: system("PAUSE"), albo getch() z biblioteki conio) |
|
Precel Temat założony przez niniejszego użytkownika |
» 2012-11-30 22:43:25 Dzięki za odpowiedź! //Temat zamykam :P Tutaj jest poprawny kod jakby ktoś potrzebował: #include <iostream> #include <conio.h> using namespace std; int main() { unsigned int a; unsigned int b; bool Dziala; char Dzialanie; do { cout << "Podaj pierwsza liczbe " << endl; cin >> a; Dziala = std::cin.good(); cin.clear(); cin.sync(); } while( Dziala != true ); do { cout << "Podaj druga liczbe " << endl; cin >> b; Dziala = std::cin.good(); cin.clear(); cin.sync(); } while( Dziala != true ); do { cout << "Co z tym teraz zrobic? " << endl; cout << "[1] Dodawanie " << endl; cout << "[2] Odejmowanie " << endl; cout << "[3] Mnozenie " << endl; cout << "[4] Dzielenie " << endl; cout << "[5] Wyjscie " << endl; getch(); cin >> Dzialanie; switch( Dzialanie ) { case '1': cout << a + b << endl; break; case '2': cout << a - b << endl; break; case '3': cout << a * b << endl; break; case '4': cout << a / b << endl; break; } } while( Dzialanie == 5 ); cout << ":)" << endl; getch(); return 0; }
|
|
Admixior |
» 2012-11-30 22:54:11 Słabo pojąłeś czego dotyczy warunek umieszczany w pętli. Powinieneś zapoznać się dokładniej z operatorami &&( AND / ORAZ oba warunki spełnione zwraca true); ||( OR / LUB minimum jeden warunek spełniony true) Oraz pamiętać że jako warunek w pętli podajesz zależność kiedy pętla ma być robiona jeszcze raz. Jeżeli przeanalizujesz twój warunek to zauważysz że program przerwie się jeżeli coś obliczysz, a nie przerwie się (pętla się będzie wykonywać dalej) tylko wtedy jeżeli dasz wyjście czyli 5 (bo warunek będzie spełniony więc pętla się jeszcze raz wykona)! Co jest niedorzecznością ;] |
|
« 1 » |