#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
const int maxn=100;
int number[maxn];
char symbolt[maxn];
string s,t;
int i,j,p;
void push()
{
p++;
symbolt[p]=s[i];
}
void pop()
p--;
switch (symbolt[p+1])
case "+":{number[p]+=number[p+1];break;}
case "-":{number[p]=number[p]-number[p+1];break;}
case "*":{number[p]=number[p]*number[p+1];break;}
case "/":{number[p]=number[p]/number[p+1];break;}
bool can()
if (((s[i]=="+")||(s[i]=="-"))&&(symbolt[p]!="(")) return true;
if (((s[i]=="*")||(s[i]=="/"))&&((symbolt[p]=="*")||(symbolt[p]=="/"))) return true;
return false;
int stringToNumber(string aStr)
int number = 0;
for (int i=0;i<aStr.length();i++)
number = number*10 + aStr[i]-48;
return number;
int main()
cout<<"Input your string:";
cin>>s;
s="("+s+")";
i=0;
p=0;
while (i<=s.length()-1)
while (s[i]=="(")
push();
i++;
j=i;
do
while ((s[i]>="0")&&(s[i]<="9"));
int m;
t="";
int h=0;
for(m=j;m<i;m++) t=t+s[m];
number[p] = stringToNumber(t);;
if (s[i]==")")
while (symbolt[p]!="(") pop();
number[p]=number[p+1];
else
while (can()) pop();
while ((i<=s.length())&&(s[i-1]==")"));
cout<<"Result="<<number[0]<<endl;
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
const int maxn=100;
int number[maxn];
char symbolt[maxn];
string s,t;
int i,j,p;
void push()
{
p++;
symbolt[p]=s[i];
}
void pop()
{
p--;
switch (symbolt[p+1])
{
case "+":{number[p]+=number[p+1];break;}
case "-":{number[p]=number[p]-number[p+1];break;}
case "*":{number[p]=number[p]*number[p+1];break;}
case "/":{number[p]=number[p]/number[p+1];break;}
}
}
bool can()
{
if (((s[i]=="+")||(s[i]=="-"))&&(symbolt[p]!="(")) return true;
if (((s[i]=="*")||(s[i]=="/"))&&((symbolt[p]=="*")||(symbolt[p]=="/"))) return true;
return false;
}
int stringToNumber(string aStr)
{
int number = 0;
for (int i=0;i<aStr.length();i++)
{
number = number*10 + aStr[i]-48;
}
return number;
}
int main()
{
cout<<"Input your string:";
cin>>s;
s="("+s+")";
i=0;
p=0;
while (i<=s.length()-1)
{
while (s[i]=="(")
{
push();
i++;
}
j=i;
do
{
i++;
}
while ((s[i]>="0")&&(s[i]<="9"));
int m;
t="";
int h=0;
for(m=j;m<i;m++) t=t+s[m];
number[p] = stringToNumber(t);;
do
{
if (s[i]==")")
{
while (symbolt[p]!="(") pop();
p--;
number[p]=number[p+1];
}
else
{
while (can()) pop();
push();
}
i++;
}
while ((i<=s.length())&&(s[i-1]==")"));
}
cout<<"Result="<<number[0]<<endl;
}