Pagini recente » Cod sursa (job #4450) | Cod sursa (job #2787066) | Cod sursa (job #2988940) | Cod sursa (job #885026) | Cod sursa (job #1229150)
#include <iostream>
#include <cstring>
#include <fstream>
#define Nmax 100001
using namespace std;
char *p;
void read(char *s)
{
ifstream f("evaluare.in");
f.getline(s, Nmax);
f.close();
}
int eval();
int termen();
int factor();
int main()
{
char s[Nmax];
read(s);
p = s;
ofstream g("evaluare.out");
g<<eval();
g.close();
return 0;
}
int eval()
{
int f = termen();
while(*p == '+' || *p == '-')
{
if(*p == '+')
{
++p;
f += termen();
}
else if(*p == '-')
{
++p;
f -= termen();
}
}
return f;
}
int termen()
{
int t = factor();
while(*p == '*' || *p == '/')
{
if(*p == '*')
{
++p;
t *= factor();
}
else if(*p == '/')
{
++p;
t /= factor();
}
}
return t;
}
int factor()
{
if(*p == '(')
{
++p;
int val = eval();
++p;
return val;
}
int fact = 0;
for(;*p >= '0' && *p <='9'; fact = fact * 10 + ((*p) - '0'), ++p);
return fact;
}