You will write a program that acts as a simple calculator, reading an infix algebraic expression with numbers and simple operations: +, -, *, / , (, and ).
The programming Language is C++.
Index/Document.iwa
Index/ViewState.iwa
Index/CalculationEngine.iwa
Index/DocumentStylesheet-3245.iwa
Index/AnnotationAuthorStorage.iwa
Index/DocumentMetadata.iwa
Data/PresetImageFill5-15
Data/PresetImageFill2-12
Data/PresetImageFill4-14
Data/PresetImageFill0-10
Data/PresetImageFill1-11
Data/PresetImageFill3-13
Data/bullet_gbutton_gray-16
Index/Metadata.iwa
Metadata/Properties.plist
Metadata/DocumentIdentifier
3893289F-B984-41D0-9C3A-C71DD9F5A13D
Metadata/BuildVersionHistory.plist
doc
M6.2-4582-1
preview
preview-micro
preview-web
CS 3003 S/T Data Structures
Spring, 20201
Project #2
Calculator Simulation
Focus on: template stack, stack applications, and converting an infix to its equivalent postfix and evaluating the postfix expression.
TASK:
You will write a program that acts as a simple calculator, reading an infix algebraic expression with numbers and simple operations: +, -, *, / , (, and ). The program converts an infix expression into an equivalent postfix expression, and then evaluates the postfix expression, and then prints the result if input expression is correct otherwise prints error messages. Your program must interact with the user until the user quits.
REQUIREMENTS:
1. Your simulator must work with both single digit operands and multiple digit operands.
2. You may use your own stack template class or library
3. You must write a readme file that explains how to compile and run your project.
4. You must develop a design document to how your project works.
5. Your program must produce a correct result if an input expression is correct, otherwise an error message should be given.
6. You must comment your program properly (including proper comments and program synopsis). You may suffer up to 20 % percent penalty if you failed to do so.
7. You must put your functions and variables together to form a class—calculator.
8. You may have at least three functions: start, convert_infix_to_postfix, check_match, and evaluate_postfix in your class.
9. You should turn in your project on time; otherwise you will suffer 10% deduction per day.
Your program output may look like:
Enter your infix:
(3+4)*7
The result is:
49
Would you do it again (y/n): y
Enter your infix:
(312 + 40 ) * 3
The result is:
1056
Enter your infix: 23+(34-5 *3
Group operator did not match, please input again.
Would you do it again (y/n): n
THANK YOU!
Your main function may look like:
OOP Approach:
int main()
{
Calculator mycal;
mycal.start();
}
Your class may look like:
class Calculator
{
private:
string infix, postfix;
char answer;
public:
Calculator( );
void start( );
bool check_match();
void convert_infix_postfix( );
void
evaluate_postfix( );
int precedence(char);
};
Your start function may look like:
void Calculator::start( )
{
do {
cout<<”\nEnter an infix expression: “;
getline(cin, infix); //read the expression from keyboard
if(check_match())
{
convert_infix_to_postfix( );
evaluate_postfix( );
}
else
continue; //go back to the top of the loop
cout<<”\nDo it again y/n : “
cin >>answer;
if( tolower(answer) == ‘y’)
continue; //go back to the top of the loop
else{
cout<< “THANK YOU !”< break; //break out of the loop }
}while(true);
} DUE : March 23, Tuesday, 2021. Click the given link to turn in a copy of your source code, readme, your testing data and your program’s output, and your program design.