Pagini recente » Cod sursa (job #2355685) | Cod sursa (job #2441773) | Cod sursa (job #501977) | Cod sursa (job #2972443) | Cod sursa (job #1510175)
#include <cstdio>
#include <cstring>
using namespace std;
char v[100010];
int poz,n;
int numar()
{
int nr=0;
for(;v[poz]>='0' && v[poz]<='9';poz++) nr=nr*10+v[poz]-'0';
return nr;
}
int solve()
{
int sol=0,p=1;
if(v[poz]=='-') {p=-1;poz++;}
while(poz<n && v[poz]!=')')
{
if(v[poz]=='+') {sol+=p;p=1;poz++;}
else if(v[poz]=='-') {sol+=p;p=-1;poz++;}
else
{
int x,tip=0;
if(v[poz]=='*') {poz++;tip=0;}
else if(v[poz]=='/') {poz++;tip=1;}
if(v[poz]=='(') {poz++;x=solve();}
else x=numar();
if(tip==0) p*=x;
else p/=x;
}
}
sol+=p;
poz++;
return sol;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",v);
n=strlen(v);
printf("%d",solve());
return 0;
}