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);
}