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