Witam,
od kilku dni w wolnym czasie przerabiam sobie jeden z darmowych kursów online dotyczących języka C++. Doszedłem do zadania, w którym mam napisać prosty kalkulator służący do dodawania/odejmowania/dzielenia/mnożenia dwóch liczb. Jako że jestem totalnie nowy, proszę o naprowadzenie mnie na dobrą drogę i ocenę moich wypocin.
Najbardziej interesuje mnie czy warunek z komentarzem mógłby być prostszy + przy wpisywaniu np. liter do działań (zamiast liczb) wyświetla się komentarz o błędzie, ale działania z 'switcha' są liczone i wypisywane, więc przypisałem w wypadku błędu zmiennym wartość 0, żeby nie wypisywało mi głupot w konsoli... Jak mogę to lepiej zrobić?
#include <iostream> using namespace std; int main() { float liczba1, liczba2; int menu; float wynik = 0; do { cin.clear(); cin.sync(); cout << "Obecny wynik to "<< wynik << endl << endl; cout << "Wybierz dzialanie"<< endl << endl; cout << " [1] Dodawanie"<< endl; cout << " [2] Odejmowanie"<< endl; cout << " [3] Mnozenie"<< endl; cout << " [4] Dzielenie"<< endl; cout << " [5] Wyjscie"<< endl << endl; cin >> menu; cout << endl; if(1 == menu || 2 == menu || 3 == menu || 4 == menu) // Jaki warunek bylby tutaj odpowiedniejszy? { cout << "Wprowadz pierwsza liczbe: "; if (cin >> liczba1) { cout << "Wprowadz druga liczbe: "; if (cin >> liczba2) cout << endl; else { cout << "Blad! Sprobuj ponownie."<< endl; liczba1 = 0; // Aby wyzerowac poprzednio wczytana liczbe? } } else { cout << "Blad! Sprobuj ponownie."<< endl; liczba2 = 0; // Aby liczba2 nie miala losowej wartosci przy nieprawidlowym wczytaniu liczby1? Co powinienem w takim przypadku uzyc? } } switch(menu) { case 1: wynik = liczba1 + liczba2; cout << liczba1 << "+"<< liczba2 << "="<< wynik << endl; break; case 2: wynik = liczba1 - liczba2; cout << liczba1 << "-"<< liczba2 << "="<< wynik << endl; break; case 3: wynik = liczba1 * liczba2; cout << liczba1 << "*"<< liczba2 << "="<< wynik << endl; break; case 4: wynik = liczba1 / liczba2; cout << liczba1 << "/"<< liczba2 << "="<< wynik << endl; break; case 5: return 0; break; default: cout << "Wprowadzono bledne dane. Sprobuj ponownie."<< endl; break; } } while(menu != 5); return 0; }