Pagini recente » Cod sursa (job #1239896) | Cod sursa (job #1884724) | Cod sursa (job #3181664) | Cod sursa (job #53643) | Cod sursa (job #1360937)
#include <cstdio>
using namespace std;
const int MAX = 100010;
char S[MAX], *p = S;
int termen();
int factor();
int eval()
{
int r = termen();
while (*p == '+' or *p == '-')
switch (*p)
{
case '+': p++; r = r + termen(); break;
case '-': p++; r = r - termen(); break;
}
return r;
}
int termen()
{
int r = factor();
while (*p == '*' or *p == '/')
switch (*p)
{
case '*': p++; r = r * factor(); break;
case '/': p++; r = r / factor(); break;
}
return r;
}
int factor()
{
int r = 0;
if (*p == '(')
{
p++;
r = eval();
p++;
}
else
while ('0' <= *p && *p <= '9')
{
r = r * 10 + *p - '0';
p++;
}
return r;
}
int main()
{
fgets ( S, MAX, fopen ("evaluare.in", "r") );
fprintf ( fopen ("evaluare.out", "w"), "%ld\n", eval() );
return 0;
}