Pagini recente » Cod sursa (job #3293367) | Cod sursa (job #236181) | Diferente pentru implica-te/arhiva-educationala intre reviziile 211 si 223 | Cod sursa (job #3291509) | Cod sursa (job #3294049)
#include <bits/stdc++.h>
#define N 100005
using namespace std;
///3549
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[N],*p=s;
long long Termen();
long long Factor();
long long Eval()
{
long long r=Termen();
while(*p=='+' || *p=='-')
switch(*p)
{
case '+': ++p; r+=Termen(); break;
case '-': ++p; r-=Termen(); break;
}
return r;
}
long long Termen()
{
long long r=Factor();
while(*p=='*' || *p=='/')
switch(*p)
{
case '*': ++p; r*=Factor(); break;
case '/': ++p; r/=Factor(); break;
}
return r;
}
long long Factor()
{
long long r=0;
if(*p=='('){++p; r=Eval(); ++p;}
else
{
while(*p>='0' && *p <='9')
{
r=r*10+*p-'0';
++p;
}
}
return r;
}
int main()
{
fin.get(s,N);
fout<<Eval();
return 0;
}