So how do I tell the compiler what to do if the user inputs a character instead of a number?
- Code: Select all
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <limits>
using namespace std;
int main()
{
begin:
double number1 = 0;
int choice;
while ((cout << "\nPlease input a number: ") && !(cin >> number1))
{
cout << "This is not a number!";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
cout << "Please choose an operation you'd like to perform:\n";
cout << "1. Addition\n";
cout << "2. Subtraction\n";
cout << "3. Multiplication\n";
cout << "4. Division\n";
again:
while ((cout << "Choose operation: ") && !(cin >> choice) || (choice >=5) || (choice <0))
{
cout << "This is not a valid choice, try again!\n";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
goto again;
}
double number2 = 0;
while ((cout << "\nNow input a second number: ") && !(cin >> number2))
{
cout << "This is not a valid choice!";
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
if (choice == 1)
cout << number1 << " + " << number2 << " = "<< number1 + number2 << endl;
if (choice == 2)
cout << number1 << " - " << number2 << " = "<< number1 - number2 << endl;
if (choice == 3)
cout << number1 << " * " << number2 << " = "<< number1 * number2 << endl;
if (choice == 4)
{
if (number2 == 0)
cout << "Cannot divide by zero.\n";
else
cout << number1 << " / " << number2 << " = "<< number1 / number2 << endl;
}
char response;
cout << "Would you like to start again? (y/n): ";
cin >> response;
if (response == 'y')
{
system("cls");
goto begin;
}
else
cout << "\nHave a nice day!" << endl;
system("pause");
return 0;
}
