Pagini recente » Cod sursa (job #1395983) | Cod sursa (job #222280) | Cod sursa (job #1404043) | Cod sursa (job #1629979) | Cod sursa (job #2843931)
#include <fstream>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
int eval();
int termen();
int factor();
char s[100050], *p;
int eval()
{
int r;
r = termen();
while(*p == '+' || *p == '-')
{
if(*p == '+')
{
++p;
r += termen();
}
else
{
++p;
r-= termen();
}
}
return r;
}
int termen()
{
int r;
r = factor();
while(*p == '*' || *p == '/')
{
if(*p == '*')
{
++p;
r *= factor();
}
else
{
++p;
r /= factor();
}
}
return r;
}
int factor()
{
int r = 0;
if(*p == '(')
{
++p;
r = eval();
++p;
}
else
{
while (*p >= '0' && *p <= '9')
{
r = r * 10 + int(*p)-'0';
++p;
}
}
return r;
}
int main()
{
f.getline(s, 100050);
p = s;
g << eval();
return 0;
}