#include <iostream>
using std::cout;
using std::cin;
using std::cerr;
using std::endl;

int getPosInteger(char *prompt, int maxTries)
{
    int value;
    
    for (int i = 0; i < maxTries; i++)
    {
        cout << prompt;
        cin >> value;
        if (cin.fail())
        {
            value = -1;
            cin.clear();
            cin.ignore(300, '\n');
        }

        if (value > 0)
        {
            // we succeeded in getting a positive integer
            break;
        }
        else
        {
            cerr << "Bad input (expecting a positive integer)\n";
        }
    }

    if (value <= 0)
    {
        cerr << "Failed to get positive integer after "
             << maxTries
             << " tries - exiting program\n";
        exit(1);
    }

    return value;
}

int main (void)
{
    while (1)
    {
        int numTries = 3;
        int valueA, valueB;

        valueA = getPosInteger("Enter value for A\n", numTries);
        valueB = getPosInteger("Enter value for B\n", numTries);

        cout << "hypotenuse = "
             << sqrt(valueA * valueA + valueB * valueB)
             << endl << endl;
    }

    return 0;
}

