Pagini recente » Cod sursa (job #3033279) | Cod sursa (job #2398200) | Cod sursa (job #2824176) | Cod sursa (job #1380672) | Cod sursa (job #3285663)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
const int NMAX = 100000;
char s[NMAX+1], *p;
int nr(); int Eval(); int termen();
int nr()
{
int x = 0;
if(*p == '('){p++; x = Eval(); p++;}
else
{
while(isdigit(*p))
x = x*10 + (*p-'0'), p++;
}
return x;
}
int termen()
{
int x = nr();
while(*p == '*' || *p == '/')
{
if(*p == '*'){p++;x*=nr();}
else{p++; x/=nr();}
}
return x;
}
int Eval()
{
int x = termen();
while(*p == '-' || *p == '+')
{
if(*p == '-'){p++; x-=termen();}
else{p++; x+=termen();}
}
return x;
}
signed main()
{
fin >> s;
p = s;
fout << Eval();
return 0;
}