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