int main() { int a, b, typ; cout << "Program kalkulator" << endl; cout << "Wprowadz pierwsza liczbe: "; do { cin.clear(); cin.sync(); cin >> a; cin.fail(); if (cin.fail()) cout << "Nieprawidlowa wartosc. Sprobuj jeszcze raz: "; } while (cin.fail());
cout << "Wprowadz druga liczbe: "; do { cin.clear(); cin.sync(); cin >> b; cin.fail(); if (cin.fail()) cout << "Nieprawidlowa wartosc. Sprobuj jeszcze raz: "; } while (cin.fail());
cout << "Pierwsza liczba: " << a << " Druga liczba: " << b << endl;
cout << "Wybierz dzialanie na liczbach: "; do { cin.clear(); cin.sync(); cin >> typ; cin.fail(); if (cin.fail() || typ < 0 || typ > 5) cout << "Niepoprawny numer dzialania. Sprobuj jeszcze raz: "; if ((typ == 0 || typ == 5) && !cin.fail()) { cout << endl << "Program zakonczy dzialanie"; return 0; } } while (cin.fail() || typ > 5);
@Gorion103: warunek typ<0 pokazuje komunikat o niepoprawnej wiadomości i ostatnia pętla powinna się powtórzyć aby spróbować jeszcze raz wprowadzić tą wartość poprawnie. Z jakiegoś powodu wprowadzenie wartości mniejszej od 0 kończy pętlę której warunki są while (cin.fail() || typ > 5);
@PanMieszko: while (cin.fail() || typ > 5); oznacza tyle co "rób dopóki podawany typ jest większy od 5, jeżeli jest mniejszy to zakończ pętlę. Rozumiesz gdzie masz błąd?
Czemu podanie wartości typ mniejszej od 0 kończy ostatnią pętlę?
#include
using namespace std;
int main()
{
int a, b, typ;
cout << "Program kalkulator" << endl;
cout << "Wprowadz pierwsza liczbe: ";
do
{
cin.clear();
cin.sync();
cin >> a;
cin.fail();
if (cin.fail())
cout << "Nieprawidlowa wartosc. Sprobuj jeszcze raz: ";
} while (cin.fail());
cout << "Wprowadz druga liczbe: ";
do
{
cin.clear();
cin.sync();
cin >> b;
cin.fail();
if (cin.fail())
cout << "Nieprawidlowa wartosc. Sprobuj jeszcze raz: ";
} while (cin.fail());
cout << "Pierwsza liczba: " << a << " Druga liczba: " << b << endl;
cout << "Wybierz dzialanie na liczbach: ";
do
{
cin.clear();
cin.sync();
cin >> typ;
cin.fail();
if (cin.fail() || typ < 0 || typ > 5)
cout << "Niepoprawny numer dzialania. Sprobuj jeszcze raz: ";
if ((typ == 0 || typ == 5) && !cin.fail())
{
cout << endl << "Program zakonczy dzialanie";
return 0;
}
} while (cin.fail() || typ > 5);
return 0;
}
Komentarz usunięty przez autora