Pagini recente » Cod sursa (job #2616301) | Cod sursa (job #392706) | Cod sursa (job #2556679) | Cod sursa (job #2251380) | Cod sursa (job #3225264)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char *s, *p;
int n;
int Termen();
int Factor();
int Eval()
{
int r = Termen();
while (s[n] == '+' or s[n] == '-')
{
switch(s[n])
{
case '+' : {n++; r += Termen(); break;}
case '-' : {n++; r -= Termen(); break;}
}
}
return r;
}
int Termen()
{
int r = Factor();
while (s[n] == '*' or s[n] == '/')
{
switch(s[n])
{
case '*' : {n++; r *= Factor(); break;}
case '/' : {n++; r /= Factor(); break;}
}
}
return r;
}
int Factor()
{
int r;
if (s[n] == '(')
{
n++;
r = Eval();
n++;
}
else
{
r = 0;
while (isdigit(s[n]))
{
r = r * 10 + s[n] - '0';
n++;
}
}
return r;
}
int main()
{
p = new char[100005];
n = 1;
fin >> p;
s = p - 1;
fout << Eval();
return 0;
}