Pagini recente » Cod sursa (job #772953) | Cod sursa (job #2294818) | Cod sursa (job #1576674) | Cod sursa (job #1763250) | Cod sursa (job #1912751)
#include <fstream>
#include <cctype>
#define in "evaluare.in"
#define out "evaluare.out"
#define lgmax 100003
using namespace std;
ifstream fin(in);
ofstream fout(out);
char c[lgmax],*p = c;
inline int eval();
inline int termen();
inline int factor();
inline int eval()
{
int r = termen();
while(*p == '+' || *p == '-')
switch(*p)
{
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
++p;
return r;
}
inline int termen()
{
int r = factor();
while(*p == '*' || *p == '/')
switch(*p)
{
case '*':
++p;
r *= factor();
break;
case '/':
++p;
r /=factor();
break;
}
return r;
}
inline int factor()
{
if(*p == '(')
{
++p;
return eval();
}
int r = 0;
while(isdigit(*p))
r = r*10 + *p - '0', ++p;
return r;
}
int main()
{
fin.getline(c,lgmax);
fout<<eval();
fin.close(); fout.close();
return 0;
}