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;
}