Pagini recente » Cod sursa (job #1472002) | Cod sursa (job #1406066) | Cod sursa (job #2095424) | Cod sursa (job #3204176) | Cod sursa (job #1913624)
#include <fstream>
#define NMAX 100005
using namespace std;
char sir[NMAX];
int poz;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
int eval();
int termen1();
int termen2();
int eval()
{
int r = termen1();
while(sir[poz] == '+' || sir[poz] == '-')
{
if(sir[poz] == '+')
{
poz++;
r += termen1();
}
if(sir[poz] == '-')
{
poz++;
r-= termen1();
}
}
return r;
}
int termen1()
{
int r = termen2();
while(sir[poz] == '*' || sir[poz] == '/')
{
if(sir[poz] == '*')
{
poz++;
r *= termen2();
}
else
{
poz++;
r /= termen2();
}
}
return r;
}
int termen2()
{
int r = 0;
if(sir[poz] == '(')
{
poz++;
r = eval();
poz++;
}
while(sir[poz] >= '0' && sir[poz] <= '9')
{
r = r*10 + sir[poz] - '0';
poz++;
}
return r;
}
int main()
{
f.getline(sir, NMAX-2);
g<<eval();
}