Pagini recente » Cod sursa (job #618530) | Cod sursa (job #1369641) | Cod sursa (job #744226) | Cod sursa (job #324946) | Cod sursa (job #2828974)
#include <bits/stdc++.h>
using namespace std;
ifstream file_in("evaluare.in");
ofstream file_out("evaluare.out");
string expresie;
stack<char> operatori; stack<int> operanzi;
int i, smallPriority(), mediumPriority(), bigPriority();
int smallPriority()
{
int temp = mediumPriority();
while (expresie[i] == '+' || expresie[i] == '-')
{
if (expresie[i] == '+')
++i, temp += mediumPriority();
else
++i, temp -= mediumPriority();
}
return temp;
}
int mediumPriority()
{
int temp = bigPriority();
while (expresie[i] == '*' || expresie[i] == '/')
{
if (expresie[i] == '*')
++i, temp *= bigPriority();
else
++i, temp /= bigPriority();
}
return temp;
}
int bigPriority()
{
int temp = 0;
if (expresie[i] == '(')
{
++i;
temp = smallPriority();
++i;
}
else
while (isdigit(expresie[i]))
temp = temp * 10 + (expresie[i] - '0'), ++i;
return temp;
}
int main()
{
file_in >> expresie;
file_out << smallPriority();
return 0;
}