Problem z zaimplementowaniem algorytmu...

0

Witam, mam zaimplementować w C++ algorytm na równanie liniowe.
Mam jednak pewien "drobny problem" z tym.

 while(exit==false)
                    {

        cout << "Podaj wartosc A: "; cin >> a;
        cout << "Podaj wartosc B: "; cin >> b;

Konkretnie chodzi o ten fragment kodu. Chcę zabezpieczyć go przed wczytaniem niewłaściwych znaków np. liter.

 while(exit==false)
                    {

        cout << "Podaj wartosc A: "; cin >> a;
if(cin.good())
{cout << "good!" << endl } // i leci dalej
else if(cin.fail())
{
cout << "fail!" << endl;
continue;
}
        cout << "Podaj wartosc B: "; cin >> b;

Jak zmienię owy fragment kodu na taki jak powyżej to po podaniu dobrej wartości tj liczby program działa ale jak ma się spełnić cin.fail() to program się sypie. Dlaczego tak się dzieje i jak temu zapobiec?

0

Gdybym mógł dałbym ci bana za niesamodzielność
Zabezpieczenie przed wpisywaniem liter

0
int a = 0;
while(true)
{
    cout << "wprowadz wartosc: ";
    cin >> a;
    if(cin.fail())
    {
        cerr << "bledne dane!" << endl;
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        continue;
    }

    cout << " ok!\n";
    break;
}

tak też można ;)

edit: oczywiście do tego rozwiązania potrzebne jest dołączenie "limits".

1 użytkowników online, w tym zalogowanych: 0, gości: 1