Pagini recente » Cod sursa (job #630823) | Cod sursa (job #840774) | Cod sursa (job #2602975) | Cod sursa (job #3000161) | Cod sursa (job #2091881)
#include <cstdio>
using namespace std;
int Evaluate(), Term(), Factor();
char expression[1 << 17], *i = expression;
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", expression);
printf("%d", Evaluate());
return 0;
}
int Evaluate()
{
int result = Term();
while (true)
{
switch (*i)
{
case '+':
i++;
result += Term();
break;
case '-':
i++;
result -= Term();
break;
default :
return result;
}
}
}
int Term()
{
int result = Factor();
while (true)
{
switch (*i)
{
case '*':
i++;
result *= Factor();
break;
case '/':
i++;
result /= Factor();
break;
default:
return result;
}
}
}
int Factor()
{
int result = 0;
if(*i == '(')
{
i++;
result = Evaluate();
i++;
}
else
{
while (*i >= '0' && *i <= '9')
{
result = result * 10 + *i - '0';
i++;
}
}
return result;
}