Pagini recente » Cod sursa (job #1907661) | Cod sursa (job #2498624) | Cod sursa (job #1467347) | Cod sursa (job #2952853) | Cod sursa (job #2860401)
#include <bits/stdc++.h>
using namespace std;
char op[4][4] = {"+-", "*/", "^", ""};
#define NX 100010
string S;
char *p = &S[0];
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval(int a, int b, char o)
{
switch (o)
{
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
return a / b;
}
return 0;
}
int expr(int lev)
{
int x, y;
if (lev == 2)
{
if (*p == '(')
{
++p, x = expr(0), ++p;
}
else
{
for (x = 0; *p >= '0' && *p <= '9'; ++p)
{
x = x * 10 + *p - '0';
}
}
}
else
{
for (x = expr(lev + 1); strchr(op[lev], *p); x = y)
{
y = eval(x, expr(lev + 1), *p++);
}
}
return x;
}
int main()
{
f >> S;
S += " ";
g << expr(0);
return 0;
}