Pagini recente » Cod sursa (job #1530441) | Cod sursa (job #1816661) | Cod sursa (job #2318041) | Cod sursa (job #2552296) | Cod sursa (job #1932916)
#include <fstream>
#include <cctype>
#define in "expresie.in"
#define out "expresie.out"
#define lgmax 100003
using namespace std;
ifstream fin(in);
ofstream fout(out);
typedef long long ll;
inline ll eval();
inline ll term();
inline ll factor();
char c[lgmax],*p = c;
inline ll eval()
{
ll rez = term();
while(*p == '+' || *p == '-' || *p == ' ')
{
switch(*p)
{
case '+':
++p;
rez += term();
break;
case '-':
++p;
rez -= term();
break;
default : ++p; break;
}
}
return rez;
}
inline ll term()
{
ll rez = factor();
while(*p == '*' || *p == '/' || *p == ' ')
{
switch(*p)
{
case '*':
++p;
rez *= factor();
break;
case '/':
++p;
rez /= factor();
break;
default : ++p; break;
}
}
return rez;
}
inline ll factor()
{
ll rez = 0;
while(*p == ' ') ++p;
if(*p == '(')
{
++p;
rez = eval();
++p;
}
else
{
while(isdigit(*p))
{
rez = rez*10 + *p - '0';
++p;
}
}
return rez;
}
int main()
{
fin.getline(c,lgmax);
fout<<eval()<<"\n";
fin.close(); fout.close();
return 0;
}