Brys Temat założony przez niniejszego użytkownika |
Pętla do ... while: Zadanie domowe - kalkulator » 2017-02-16 20:42:25 Witam Czy kod, który wklejam niżej jest poprawny? Chcę wiedzieć, bo wolę być pewnym, że program jest ok, niż myśleć, że wszystko umiem i okłamywać samego siebie. #include <iostream> using namespace std; int main() { int wynik = 0, dzialanie, liczba1, liczba2; do { cin.clear(); cin.sync(); cout << "Wynik:" << wynik << endl; cout << "Podaj 1 liczbe: "; cin >> liczba1; if( cin.good(), liczba1 != 0 ) { cout << "Podaj 2 liczbe: "; cin >> liczba2; if( cin.good(), liczba2 != 0 ) { cout << "Wybierz dzialanie" << endl; cout << "[1] Dodawanie" << endl; cout << "[2] Odejmowanie" << endl; cout << "[3] Mnozenie" << endl; cout << "[4] Dzielenie" << endl; cout << "[5] Rezygnuj" << endl; cin >> dzialanie; switch( dzialanie ) { case 1: cout << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << endl; wynik = liczba1 + liczba2; break; case 2: cout << liczba1 << " - " << liczba2 << " = " << liczba1 - liczba2 << endl; wynik = liczba1 - liczba2; break; case 3: cout << liczba1 << " * " << liczba2 << " = " << liczba1 * liczba2 << endl; wynik = liczba1 * liczba2; break; case 4: cout << liczba1 << " / " << liczba2 << " = " << liczba1 / liczba2 << endl; wynik = liczba1 / liczba2; break; case 5: return 0; break; default: cout << "Nie ma takiej opcji" << endl; break; } } } } while( liczba1 > 0, liczba2 > 0 ); cout << "Nie podales liczby poprawnie"; return 0; }
|
|
Janusz2 |
» 2017-02-16 21:14:00 Hej, sam dopiero się uczę i mogę gadać bzdury ale: Typ danych int pozwala ci na operowanie jedynie liczbami całkowitymi, więc Twój kalkulator będzie wszystko zaokrąglał. Gdy spróbujesz podzielić np. 10/6 wyjdzie Ci 1, aby uczynić wyniki bardziej precyzyjnymi proponuję wprowadzenie, typu float dla liczba1 i liczba2. |
|
Brys Temat założony przez niniejszego użytkownika |
» 2017-02-16 22:07:21 Trafna uwaga, zapomniałem o tym. Dzięki. Czy ktoś ma jeszcze jakieś uwagi? |
|
maly7 |
» 2017-02-17 21:03:59 Zamiast: while( liczba1 > 0, liczba2 > 0 ); Powinieneś dać: while( liczba1 > 0 && liczba2 > 0 ); I taka propozycja, dodaj również działania na liczbach ujemnych oraz 0 (zabezpiecz się przed dzieleniem przez 0). |
|
Brys Temat założony przez niniejszego użytkownika |
» 2017-02-18 22:01:38 W poleceniu jest napisane, aby kalkulator wykonał obliczenia, jeżeli liczba jest różna od 0 |
|
czaffik |
» 2017-02-18 23:32:48 Nawet nie wiedziałem czy coś takiego zadziała: if( cin.good(), liczba2 != 0 )
pytanie tylko czy to jest równoważne && czy ||, mi się coś wydaje że ||. Zamiast float możesz śmiało używać double, pamięci ci chyba nie brakuje? no i nie tworzysz wyrzyłowanych aplikacji gdzie każdy bajt pamięci jest na wagę złota. |
|
jankowalski25 |
» 2017-02-19 12:00:40 pytanie tylko czy to jest równoważne && czy ||, mi się coś wydaje że || |
Nie. Istnieje coś takiego, jak operator , (operator przecinek, można go przeciążać), który zwraca to, co znajduje się po prawej stronie. Przykład: #include <iostream>
int main() { int a = 2; int b = 3; int c =( a = 5, b ) + 100; int d =( a = 7, b = 11, c ) + 200; std::cout << a << ' ' << b << ' ' << c << ' ' << d; } Standardowe wyjście programu: 7 11 103 303
W tamtym przypadku to sprowadzi się do if( liczba2 != 0 ) . |
|
« 1 » |