0

I have to make a calculator for a school assignment. I'm fairly new to C++ programming and don't know much. English also isn't my first language so I apologize for any confusion on my part.

I was wondering, how would I be able to prevent infinite looping if I put in the wrong input? Let's say I can only input numbers, but I input a letter instead. When I enter this wrong input, the loop becomes infinite, but what I want to happen is for the application to simply state "wrong input" or something, and then only loop the calculator menu once so I can continue with the right input this time.

Could someone please tell me what it is I'm doing wrong, and what I could do instead?

Code down below. I am an amateur at best. In the code, I've fixed it from going into infinite loop already, but now it won't loop at all, while what I need to happen is for it to loop only once so that I can enter the right input this time.

#include <iostream.h>
#include <conio.h>
#include <cmath>


int main ()
{

    cout << "Calculator [v.1.0]" << endl;
    cout << "(c) 2021 <Chayenne van der Erf>" << endl << endl;

 while (true) {
     if (!cin.fail()) {

    cout << "Kies een bewerking en druk op Enter:" << endl;
    cout << "1. Optellen              2. Aftrekken" << endl;
    cout << "3. Vermenigvuldigen      4. Delen" <<endl;
    cout << "5. Kwadraat              6. Worteltrekken" <<endl;
    cout << "7. Reciproke             8. Logarithme" <<endl;
    cout << "0. Exit" << endl << endl;

    int Bewerking;
    cout << "Bewerking: ";
    cin >> Bewerking;
    if (!cin.fail()) {

    cout << endl;

    switch (Bewerking) {
    case 1:
     cout << "Optellen";
        break;
    case 2:
     cout << "Aftrekken";
        break;
    case 3:
     cout << "Vermenigvuldigen";
        break;
    case 4:
     cout << "Delen";
        break;
    case 5:
     cout << "Kwadraat";
        break;
    case 6:
     cout << "Worteltrekken";
        break;
    case 7:
     cout << "Reciproke";
        break;
    case 8:
     cout<< "Logarithme";
        break;
    case 0:
    exit (0);

    default: cout << "Verkeerde Input" << endl;}    }

    cout << endl;

    if (Bewerking == 1) {
     double A, B;
     double antwoord;

    cout << "Enter een waarde: ";
    cin >> A;
     if (!cin.fail()) {

    cout << "Enter een waarde: ";
    cin >> B;
        if (!cin.fail()) {

    antwoord = A + B;
    cout << endl;
        cout << "= " << antwoord << endl;} } }

    else if (Bewerking == 2) {
     double A, B;
     double antwoord;

    cout << "Enter een waarde: ";
    cin >> A;
    if (!cin.fail()) {

    cout << "Enter een waarde: ";
    cin >> B;
    if (!cin.fail()) {

    antwoord = A - B;
    cout << endl;
        cout << "= " << antwoord << endl;} } }

     else if (Bewerking == 3) {
     double A, B;
     double antwoord;

    cout << "Enter een waarde: ";
    cin >> A;
     if (!cin.fail()) {

    cout << "Enter een waarde: ";
    cin >> B;
     if (!cin.fail()) {

    antwoord = A * B;
    cout << endl;
        cout << "= " << antwoord << endl;} } }

        else if (Bewerking == 4) {
     double A, B;
     double antwoord;

try {
    cout << "Enter een waarde: ";
    cin >> A;
     if (!cin.fail()) {

    cout << "Enter een waarde: ";
    cin >> B;
     if (!cin.fail()) {

     if (B == 0) {throw 0;}

     {antwoord = A / B;}
     cout << endl;
     cout << "= " << antwoord << endl;} } }

 catch (int E) {cout << endl;
         cout << "Delen door " << E << " is niet mogelijk" << endl; }
}


    else if (Bewerking == 5) {
     double X;
     double antwoord;
     cout << "Enter waarde: ";
     cin >> X;
        if (!cin.fail()) {
     antwoord = X * X;
        cout << endl;
        cout << "= " << antwoord << endl;} }

    else if (Bewerking == 6) {
     double X;
     double antwoord;
     cout << "Enter waarde: ";
     cin >> X;
        if (!cin.fail()) {
     antwoord = pow (X,0.5);
        cout << endl;
        cout << "= " << antwoord << endl;} }

        else if (Bewerking == 7) {
     double X;
     double antwoord;
     cout << "Enter waarde: ";
     cin >> X;
        if (!cin.fail()) {
     antwoord = 1 / X;
        cout << endl;
        cout << "= " << antwoord << endl;} }

        else if (Bewerking == 8) {
     double X;
     double antwoord;
     cout << "Enter waarde: ";
     cin >> X;
        if (!cin.fail()) {
     antwoord = log (X);
        cout << endl;
        cout << "= " << antwoord << endl;} } } }

     getch();
     return (0);

}

0 Answers0