I am new here and I am new to C++... been slowly picking things up. I created a Basic Calc program and I was wonder what you guys think on how its writen. I know its a little extreme for a basic calc but I wanted to make it transferable and upgradable as much as possible.
Code:#include <iostream>
class Math //Math object that has all the basic math functions
{
public:
int Add() const { return numx + numy; }
int Sub() const { return numx - numy; }
int Div() const { return numx / numy; }
int Mult() const { return numx * numy; }
void SetXY();
private:
int numx;
int numy;
};
void Math::SetXY() //Prompts for X and Y
{
cout << "\nx:";
cin >> numx;
cout << "y:";
cin >> numy;
};
int main()
{
using namespace std;
int menu();
int answer(int ans);
int select(unsigned short int sel);
unsigned short int sel = 0;
for (;sel != 5;) //Main Loop of Program
{
select(menu()); //Calling Menu function and passes it to the Select Function
}
return 0; //Exits Program
}
//Printing a menu on the screen and asking for a selection.
int menu()
{
unsigned short int select = 0;
for (;;)
{
cout << "1. Add\n";
cout << "2. Subtract\n";
cout << "3. Divide\n";
cout << "4. Mutiple\n";
cout << "5. Exit.\n";
cout << "\nSelect one:";
cin >> select;
if (select > 5)
cout << "Invalid Selection, try again.\n";
else
break;
}
return select;
}
//Prints the Answer
int answer(int ans)
{
cout << "\nAnswer: " << ans << "\n";
}
//Checking select to excute the correct function of object NewMath
int select(unsigned short int sel)
{
Math *NewMath = new Math; //Creates math object on the heap
switch (sel)
{
case 5: cout << "Exiting...\n"; //Exiting Program
break;
case 4: cout << "Mutilping...\n"; //Calling Mutilpe Function
NewMath->SetXY();
answer(NewMath->Mult());
break;
case 3: cout << "Dividing...\n"; //Calling Divide Function
NewMath->SetXY();
answer(NewMath->Div());
break;
case 2: cout << "Subtracting...\n"; //Calling Subtract Function
NewMath->SetXY();
answer(NewMath->Sub());
break;
case 1: cout << "Adding...\n"; //Calling Add Function
NewMath->SetXY();
answer(NewMath->Add());
}
delete NewMath; //Delete Math object
}