Pagini recente » Cod sursa (job #2913936) | Cod sursa (job #2574395) | Cod sursa (job #1048384) | Cod sursa (job #2889239) | Cod sursa (job #1641384)
#include <bits/stdc++.h>
#define DIM 100002
FILE *fin = freopen("evaluare.in", "r", stdin);
FILE *fout = freopen("evaluare.out", "w", stdout);
using namespace std;
int n, p;
char s[DIM];
int eval();
int term();
int fact();
int eval()
{
int val = term();
if(s[p] == '+' || s[p] == '-')
{
if(s[p] == '+')
++ p, val += term();
if(s[p] == '-')
++ p, val -= term();
}
return val;
}
int term()
{
int val = fact();
if(s[p] == '*' || s[p] == '/')
{
if(s[p] == '*')
++ p, val *= term();
if(s[p] == '/')
++ p, val /= term();
}
return val;
}
int fact()
{
int val = 0;
if(s[p] == '(')
{
++ p;
val = eval();
++ p;
}
if(s[p] >= '0' && s[p] <= '9')
{
while(s[p] >= '0' && s[p] <= '9')
val = val * 10 + s[p ++] - '0';
}
return val;
}
int main()
{
gets(s);
n = strlen(s);
printf("%d\n", eval());
}