Pagini recente » Rating Miriam Irimia (Miriamirimia) | Cod sursa (job #2967124) | Cod sursa (job #2378397) | Cod sursa (job #1294603) | Cod sursa (job #2851690)
#include <bits/stdc++.h>
using namespace std;
#define NMAX 1005
#define MOD 1009
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string expression;
int index = 0;
int element();
int factor();
int evaluate()
{
int result = element();
while (expression[index] == '+' || expression[index] == '-')
{
switch (expression[index])
{
case '+':
index++;
result += element();
break;
case '-':
index++;
result -= element();
break;
}
}
return result;
}
int element()
{
int result = factor();
while (expression[index] == '*' || expression[index] == '/')
{
switch (expression[index])
{
case '*':
index++;
result *= factor();
break;
case '/':
index++;
result /= factor();
break;
}
}
return result;
}
int factor()
{
int result = 0;
if (expression[index] == '(')
{
index++;
result = evaluate();
index++;
}
else
{
while (isdigit(expression[index]))
{
result = result * 10 + (expression[index] - '0');
index++;
}
result = result;
}
return result;
}
int main()
{
fin >> expression;
fout << evaluate();
fin.close();
fout.close();
return 0;
}