Pagini recente » Cod sursa (job #2327908) | Cod sursa (job #1429960) | Cod sursa (job #2654436) | Cod sursa (job #669994) | Cod sursa (job #1339127)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("evaluare.in");
ofstream out ("evaluare.out");
const int MAXN = 100001;
char S[MAXN];
char *P;
inline int GetInt ()
{
int ret = 0;
while (*P >= '0' && *P <= '9'){
ret = (ret * 10) + *P - '0';
P ++;
}
return ret;
}
int termen ();
int factor ();
int eval ()
{
int ret = termen ();
while (*P == '+' || *P == '-'){
if (*P == '+'){
P ++;
ret += termen ();
}
else{
P ++;
ret -= termen ();
}
}
return ret;
}
int termen ()
{
int ret = factor ();
while (*P == '*' || *P == '/')
if (*P == '*'){
P ++;
ret *= factor ();
}
else{
P ++;
ret /= factor ();
}
return ret;
}
int factor ()
{
int ret = 0;
if (*P == '('){
P ++;
ret = eval ();
P ++;
}
else
ret = GetInt ();
return ret;
}
int main()
{
in >> S;
P = S;
out << eval ();
return 0;
}