#include <iostream>
#include <string>
#include "Stack.h"
int main ()
{
string str = "10-11*5+4/2";
cout << parse (str) << endl;
return 0;
}
int parse (string& str)
{
Stack theStack;
int first, second;
for (int n = 0; n < str.size (); n++)
{
switch (str [n])
{
case '*':
getTwoOffStack (theStack, first, second);
theStack.push (first * second);
break;
case '/':
getTwoOffStack (theStack, first, second);
theStack.push (first / second);
break;
case '+':
getTwoOffStack (theStack, first, second);
theStack.push (first + second);
break;
case '-':
getTwoOffStack (theStack, first, second);
theStack.push (first - second);
break;
char str [3];
str [0] = str [n];
str [1] = '\0';
theStack.push (atoi (str));
}
}
int returnVal = theStack.getTop ();
theStack.pop ();
return returnVal;
}
void getTwoOffStack (Stack& theStack, int& first, int& second)
{
second = theStack.getTop ();
theStack.pop ();
first = theStack.getTop ();
theStack.pop ();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKI2luY2x1ZGUgIlN0YWNrLmgiCgppbnQgbWFpbiAoKQp7CiAgICBzdHJpbmcgc3RyID0gIjEwLTExKjUrNC8yIjsKICAgIAogICAgY291dCA8PCBwYXJzZSAoc3RyKSA8PCBlbmRsOwogICAgCiAgICByZXR1cm4gMDsKfQoKaW50IHBhcnNlIChzdHJpbmcmIHN0cikKewoKICAgU3RhY2sgdGhlU3RhY2s7ICAgICAgICAgICAgCiAgIAogICBpbnQgZmlyc3QsIHNlY29uZDsKICAgCiAgICAgZm9yIChpbnQgbiA9IDA7IG4gPCBzdHIuc2l6ZSAoKTsgbisrKQogICB7CiAgICAgIHN3aXRjaCAoc3RyIFtuXSkKICAgICAgewogICAgICAKICAgICAgY2FzZSAnKic6CiAgICAgICAgIGdldFR3b09mZlN0YWNrICh0aGVTdGFjaywgZmlyc3QsIHNlY29uZCk7CiAgICAgICAgIHRoZVN0YWNrLnB1c2ggKGZpcnN0ICogc2Vjb25kKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgICBjYXNlICcvJzoKICAgICAgICAgZ2V0VHdvT2ZmU3RhY2sgKHRoZVN0YWNrLCBmaXJzdCwgc2Vjb25kKTsKICAgICAgICAgdGhlU3RhY2sucHVzaCAoZmlyc3QgLyBzZWNvbmQpOwogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgIGNhc2UgJysnOgogICAgICAgICBnZXRUd29PZmZTdGFjayAodGhlU3RhY2ssIGZpcnN0LCBzZWNvbmQpOwogICAgICAgICB0aGVTdGFjay5wdXNoIChmaXJzdCArIHNlY29uZCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKICAgICAgY2FzZSAnLSc6CiAgICAgICAgIGdldFR3b09mZlN0YWNrICh0aGVTdGFjaywgZmlyc3QsIHNlY29uZCk7CiAgICAgICAgIHRoZVN0YWNrLnB1c2ggKGZpcnN0IC0gc2Vjb25kKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIAogICAgICAJIGNoYXIgc3RyIFszXTsKICAgICAgCSAKICAgICAgCSBzdHIgWzBdID0gc3RyIFtuXTsKICAgICAgCSBzdHIgWzFdID0gJ1wwJzsKICAgICAgCSAKICAgICAgICAgdGhlU3RhY2sucHVzaCAoYXRvaSAoc3RyKSk7CiAgICAgIH0KICAgfQogICAKICAgCiAgIGludCByZXR1cm5WYWwgPSB0aGVTdGFjay5nZXRUb3AgKCk7CiAgIAogICB0aGVTdGFjay5wb3AgKCk7CiAgIAogICByZXR1cm4gcmV0dXJuVmFsOwp9Cgp2b2lkIGdldFR3b09mZlN0YWNrIChTdGFjayYgdGhlU3RhY2ssIGludCYgZmlyc3QsIGludCYgc2Vjb25kKQp7CgogICBzZWNvbmQgPSB0aGVTdGFjay5nZXRUb3AgKCk7CiAgIAogICB0aGVTdGFjay5wb3AgKCk7CiAgIAogICBmaXJzdCA9IHRoZVN0YWNrLmdldFRvcCAoKTsKICAgCiAgIHRoZVN0YWNrLnBvcCAoKTsKfQ==