Task:

We 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.

Possible input that has spaces and characters:

1 + 1 + 1 + 1 +
1 + 1 + 1 + 1 +
1 + 1 + 1 + 1 +
1 + 1 + 1 + 1
Possible output: 16

You can use >> operator to read the numbers and the +/- characters, because >> will be skipping all spaces between the input terms.

WHat would the program be here? How would i successfully read in the file and get the right output?

Thanks

Respuesta :

#include <iostream>

#include <sstream>

#include <string>

#include <cctype>

using namespace 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';

}