Link do lekcji oraz zadania http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Petla-do-while/18
Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.
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.
Istotne problemy to przerywanie petli gdy podam podam ciag znakow wyswietlanie sie Podales 0 wiec program zostal zakonczony.
Prosze o ocene kodu i sugestie co zmienic. Program odpalam w Code Blocks i prawie dziala tak jak powinien.
#include <iostream>
using namespace std;
int main()
{
float liczba1, liczba2, wynik = 0;
bool czy_poprawne1, czy_poprawne2;
unsigned int dzialanie;
do
{
cout << "===================" << endl;
cout << "Wynik: " << wynik << endl;
cout << "===================" << endl;
cout << endl;
// podajemy liczbe1
do
{
cout << "Podaj liczbe 1 (rozna od 0): ";
cin >> liczba1;
czy_poprawne1 = cin.good();
cin.clear();
cin.sync();
if (liczba1 == 0)
{
cout << "Podales 0 wiec program zostal zakonczony." << endl;
return 0;
}
} while (czy_poprawne1 == false); // dlaczego jak wpisze ciag znakow to program zostaje zakonczony powinna byc prosba o podanie liczby
// podajemy liczbe2
do
{
cout << "Podaj liczbe 2 (rozna od 0): ";
cin >> liczba2;
czy_poprawne2 = cin.good();
cin.clear();
cin.sync();
if (liczba2 == 0)
{
cout << "Podales 0 wiec program zostal zakonczony." << endl;
return 0;
}
} while (czy_poprawne2 == false); // dlaczego jak wpisze ciag znakow to program zostaje zakonczony powinna byc prosba o podanie liczby
// menu
cout << "\n[1] Dodawanie +" << endl;
cout << "[2] Odejmowanie -" << endl;
cout << "[3] Mnozenie *" << endl;
cout << "[4] Dzielenie /" << endl;
cout << "[5] Rezygnuj" << endl;
cout << "Wybierz: ";
cin >> dzialanie;
cout << endl;
switch (dzialanie)
{
case 1:
wynik = liczba1 + liczba2;
break;
case 2:
wynik = liczba1 - liczba2;
break;
case 3:
wynik = liczba1 * liczba2;
break;
case 4:
wynik = liczba1 / liczba2;
break;
case 5:
cout << "Zakonczono dzialanie programu." << endl;
return 0;
break;
default:
cout << "Niepoprawna opcja." << endl;
break;
}
} while (liczba1 != 0 || liczba2 != 0); // czy warunek jest dobry?
return 0;
}