Pagini recente » Cod sursa (job #889531) | Cod sursa (job #83527) | Cod sursa (job #813769) | Cod sursa (job #1587220) | Cod sursa (job #2843927)
#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; /// (1+1)*13+10/2
}
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;
}