Pagini recente » Cod sursa (job #1375317) | Cod sursa (job #593402) | Cod sursa (job #2378598) | Cod sursa (job #597634) | Cod sursa (job #537113)
Cod sursa(job #537113)
#include<fstream>
#include<string.h>
#define MAX 1000001
using namespace std;
char buf[MAX], *p;
long eval();
long factor();
long termen();
int main()
{
ifstream f("evaluare.in");
f.getline(buf,MAX);
f.close();
p = buf;
ofstream g("evaluare.out");
g<<eval();
g.close();
return 0;
}
long eval()
{
long r = factor();
while(*p == '+' || *p == '-')
{
if(*p == '+')
{
++p;
r += factor();
}
if(*p == '-')
{
++p;
r-=factor();
}
}
return r;
}
long factor()
{
long r = termen();
while(*p == '*' || *p == '/')
{
if(*p == '*')
{
++p;
r*=termen();
}
if(*p == '/')
{
++p;
r/=termen();
}
}
return r;
}
long termen()
{
long r = 0;
if(*p == '(')
{
++p;
r = eval();
++p;
}
else
while(*p>='0' && *p<='9')
{
r = r*10 + *p - '0';
++p;
}
return r;
}