Pagini recente » Cod sursa (job #545747) | Cod sursa (job #1313566) | Cod sursa (job #271609) | Cod sursa (job #2689850) | Cod sursa (job #2709621)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
const int N = 100005;
char sir[N], *p = sir;
int eval();
int termen();
int factor();
int eval()
{
int val = termen();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
p++;
val += termen();
}
else
{
p++;
val -= termen();
}
}
return val;
}
int termen()
{
int val = factor();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
p++;
val *= factor();
}
else
{
p++;
val /= factor();
}
}
return val;
}
int factor()
{
int val;
if (*p == '(')
{
p++;
val = eval();
p++;
}
else
{
val = 0;
while (isdigit(*p))
{
val = val * 10 + (*p - '0');
p++;
}
}
return val;
}
int main()
{
fin >> sir;
fout << eval();
return 0;
}