Pagini recente » Cod sursa (job #344833) | Cod sursa (job #1193351) | Cod sursa (job #2837909) | Cod sursa (job #1462163) | Cod sursa (job #837656)
Cod sursa(job #837656)
#include<fstream>
#define NMAX 100005
using namespace std;
ifstream f("evaluare.in"); ofstream g("evaluare.out");
char s[NMAX], *p;
int eval();
int factor();
int termen();
int main()
{
f>>s;
p = s;
int rez = eval();
g<<rez<<'\n';
g.close();
return 0;
}
int eval()
{
int r = factor();
switch(*p)
{
case '+' : {++p; r += factor(); break;}
case '-' : {++p; r -= factor(); break;}
}
return r;
}
int factor()
{
int r = termen();
switch(*p)
{
case '*' : {++p; r *= termen(); break;}
case '/' : {++p; r /= termen(); break;}
}
return r;
}
int termen()
{
int r = 0;
if(*p == '(')
{
++p;
r = eval();
++p;
}
else
{
while('0' <= *p && *p <= '9')
{
r = r * 10 + *p - '0';
++p;
}
}
return r;
}