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