Pagini recente » Cod sursa (job #1514566) | Cod sursa (job #2095803) | Cod sursa (job #573848) | Cod sursa (job #1022521) | Cod sursa (job #1243619)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[MAXN], *p = s;
int Termen();
int Factor();
int Eval()
{
int r = Termen();
while (*p == '+' || *p == '-')
{
switch(*p)
{
case '+':
{
++p;
r += Termen();
break;
}
case '-':
{
++p;
r -= Termen();
break;
}
}
}
return r;
}
int Termen()
{
int r = Factor();
while (*p == '*' || *p == '/')
{
switch(*p)
{
case '*':
{
++p;
r *= Factor();
break;
}
case '/':
{
++p;
r /= Factor();
break;
}
}
}
return r;
}
int Factor()
{
int r = 0;
if (*p == '(')
{
++p;
r = Eval();
++p;
}
else
{
while (*p >= '0' && *p <= '9')
{
r = r * 10 + (*p - '0');
++p;
}
}
return r;
}
int main()
{
fin.getline(s, MAXN);
fout << Eval();
fin.close();
fout.close();
return 0;
}