Pagini recente » Cod sursa (job #2582687) | Cod sursa (job #3244767) | Cod sursa (job #410213) | Cod sursa (job #3164436) | Cod sursa (job #2289986)
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c[100005];
const long long A=1000000005,PLUS=1000000006,MINUS=1000000007,ORI=1000000008,CAT=1000000009;
stack <long long> q;
int main()
{int i,nr=0;
char semn='+';
in.getline(c,100002);
q.push(A);
for (i=0;c[i];)
{
if (c[i]=='('){q.push(A);i++;}
else if (c[i]=='+'){q.push(PLUS);i++;}
else if (c[i]=='-'){q.push(MINUS);i++;}
else if(c[i]=='*'){q.push(ORI);i++;}
else if (c[i]=='/'){q.push(CAT);i++;}
else if (c[i]>='0'&&c[i]<='9')
{
nr=0;
while (c[i]>='0'&&c[i]<='9')
{
nr=nr*10+c[i]-'0';
i++;
}
if (q.top()==PLUS)
{q.pop();q.push(nr);}
else if (q.top()==MINUS)
{q.pop();q.push(-1*nr);}
else if (q.top()==ORI)
{q.pop();nr=q.top()*nr;q.pop();q.push(nr);}
else if(q.top()==CAT)
{q.pop();nr=q.top()/nr;q.pop();q.push(nr);}
else if (q.top()==A)
{q.push(nr);}
}
else if(c[i]==')')
{
nr=0;
while (!(q.top()==A))
{
nr+=q.top();
q.pop();
}
q.pop();
if (q.top()==PLUS)
{q.pop();q.push(nr);}
else if (q.top()==MINUS)
{q.pop();q.push(-1*nr);}
else if (q.top()==ORI)
{q.pop();nr=q.top()*nr;q.pop();q.push(nr);}
else if(q.top()==CAT)
{q.pop();nr=q.top()/nr;q.pop();q.push(nr);}
else if (q.top()==A)
{q.push(nr);}
i++;
}
}
nr=0;
while (!(q.top()==A))
{
nr+=q.top();
q.pop();
}
out<<nr<<"\n";
out.close();
in.close();
return 0;
}