Pagini recente » Cod sursa (job #1342663) | Istoria paginii runda/ioi2013trainingcamp | Cod sursa (job #570064) | Cod sursa (job #605725) | Cod sursa (job #2109920)
#include <iostream>
#include <fstream>
#include <stack>
#include <cstring>
using namespace std;
char c[100001];
int ev(int st,int dr)
{
int v=0;
for (int i=dr; i>=st; i--)
if (c[i]==')')
v++;
else if (c[i]=='(')
v--;
else if (v==0)
{
if (c[i]=='+')
return ev(st,i-1)+ev(i+1,dr);
else if (c[i]=='-')
return ev(st,i-1)-ev(i+1,dr);
}
v=0;
for (int i=dr; i>=st; i--)
{
if (c[i]==')')
v++;
else if (c[i]=='(')
v--;
else if (v==0)
{
if (c[i]=='*')
return ev(st,i-1)*ev(i+1,dr);
else if (c[i]=='/')
return ev(st,i-1)/ev(i+1,dr);
}
}
if (c[st]=='('&&c[dr]==')')
return ev(st+1,dr-1);
v=0;
for (int i=st; i<=dr; i++)
v=v*10+c[i]-'0';
return v;
}
int main()
{
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
fin>>c;
fout<<ev(0,strlen(c)-1);
return 0;
}