I want to make a simple calculator that can add and subtract integers, and will accept arbitrarily long mathematical formulas composed of symbols +, -, and non-negative integer numbers.
Imagine you have a file formula.txt with the summation formula such as:
100 + 50 - 25 + 0 + 123 - 1
If you redirect the file into your program, it should compute and print the answer:
$ ./calc < formula.txt
247
Specifically, write a program calc.cpp that reads from the cin a sequence of one or more non-negative integers written to be added or subtracted. Space characters can be anywhere in the input. After the input ends (end-of-file is reached), the program should compute and print the result of the input summation.
You cannot use the actual sign for the calculation because it will be applied to the following number.
I suggest that you create another variable like char last_sign = 0;. Line 9/12 uses last_sign. After the calculation is done set last_sign to sign at the bottom of the loop.
Notice that after the loop is done you need to make a final calculation.
#include <iostream>
#include <sstream>
#include <string>
#include <cctype>
usingnamespace std;
string noBlanks( string str )
{
string result;
for ( char c : str ) if ( !isspace( c ) ) result += c;
return result;
}
int main()
{
int num;
int sum = 0;
string line;
cout << "Input an expression: ";
getline( cin, line );
line = noBlanks( line );
stringstream ss( line );
while ( ss >> num ) sum += num;
cout << "Result is " << sum << '\n';
}
Input an expression: 100 + 50 - 25 + 0 + 123 - 1
Result is 247