Pagini recente » Cod sursa (job #275463) | Cod sursa (job #1725025) | Cod sursa (job #1716863) | Cod sursa (job #1216833) | Cod sursa (job #1922626)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char sir[100001], *p = sir;
long term();
long fact();
long eval()
{
long r = term();
while(*p == '+' || *p == '-')
switch(*p)
{
case '+':
p++;
r += term();
break;
case '-':
p++;
r += term();
break;
}
return r;
}
long term()
{
long r = fact();
while(*p == '*' || *p == '/')
switch(*p){
case '*':
p++;
r *= fact();
break;
case '/':
p++;
r /= fact();
break;
}
return r;
}
long fact()
{
long r = 0;
if(*p == '(')
{
p++;
r = eval();
p++;
}
while(*p >= '0' && *p <= '9')
r = r * 10 + *p - '0', p++;
return r;
}
int main()
{
fin.getline(sir, 1001);
fout << eval();
return 0;
}