// A simple calulator
// Date 21:57 25/10/2016
// By Ben a.k.a DreamVB

#include <iostream>
using namespace std;
using std::cout;
using std::endl;

int main(int argc, char *argv[]){
	float a = 0;
	float b = 0;
	float result = 0;
	bool HasError = false;
	char op = '\0';
	char ans = '\0';

	while (1){
		system("cls");

		cout << " Enter first number then operator and second number eg 1+2" << endl;
		cout << " Expression\\> ";
		cin >> a >> op >> b;

		switch (op){
		case '+':
			result = (a + b);
			break;
		case '-':
			result = (a - b);
			break;
		case '*':
			result = (a * b);
			break;
		case '/':
			if (b == 0){
				cout << " Error cannot divide by zero." << endl;
				HasError = true;
			}
			else{
				result = (a / b);
			}
			break;
		case '^':
			result = ((int)a^(int)b);
			break;
		default:
			cout << " Invaild operator entered." << endl;
			HasError = true;
			break;
		}

		//Display answer if no errors.
		if (!HasError){
			cout << endl << " " << a << " " << op 
				<< " " << b << " = " << result << endl << endl;
		}

		cout << "Whould you like to go agian (Y/N) : ";
		cin >> ans;

		//Convert to uppercase
		if (ans >= 97 && ans <= 122){
			ans = (char)ans - 32;
		}

		//Check for vaild answer
		if (ans != 'Y' && ans != 'N'){
			system("cls");
			cout << "Invaild choice program will now exit." << endl;
			break;
		}

		if (ans == 'N'){
			system("cls");
			cout << "Thanks for trying the program." << endl;
			break;
		}
	} 

	system("pause");
	return 0;
}