Pagini recente » Cod sursa (job #2596170) | Cod sursa (job #32216) | Cod sursa (job #2534806) | Cod sursa (job #540904) | Cod sursa (job #1166212)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
using namespace std;
const int NMAX = 100010;
int Pos = 1;
char S[NMAX];
int Term();
int Fact();
int Eval()
{
int Ans = Term();
while(S[Pos] == '+' || S[Pos] == '-')
if(S[Pos] == '+')
Pos ++, Ans += Term();
else
Pos ++, Ans -= Term();
return Ans;
}
int Term()
{
int Ans = Fact();
while(S[Pos] == '*' || S[Pos] == '/')
if(S[Pos] == '*')
Pos ++, Ans *= Fact();
else
Pos ++, Ans /= Fact();
return Ans;
}
int Fact()
{
int Ans;
if(S[Pos] == '(')
{
Pos ++;
Ans = Eval();
Pos ++;
}else
{
Ans = 0;
while(S[Pos] && isdigit(S[Pos]))
Ans = Ans * 10 + S[Pos] - '0', Pos ++;
}
return Ans;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(S + 1);
printf("%i\n", Eval());
}