Pagini recente » Cod sursa (job #3349086) | Cod sursa (job #1808124) | Cod sursa (job #3345919) | Cod sursa (job #3314286) | Cod sursa (job #3325632)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int idx;
int Eval_Plus_Minus();
int Termen()
{
if(s[idx] == '(')
{
idx++;
int rez = Eval_Plus_Minus();
idx++;
return rez;
}
int num = 0;
while(idx < s.size() && (s[idx] <= '9' && s[idx] >= '0'))
{
num = num * 10 + int(s[idx]-'0');
idx++;
}
return num;
}
int Eval_Inm_Imp()
{
int rez = Termen();
while(idx < s.size() && (s[idx] == '*' || s[idx] == '/'))
{
bool inm = true;
if(s[idx] == '/')
inm = false;
idx++;
int t = Termen();
if(inm)
rez *= t;
else
rez /= t;
}
return rez;
}
int Eval_Plus_Minus()
{
int sum = Eval_Inm_Imp();
while(idx < s.size() && (s[idx] == '+' || s[idx] == '-'))
{
bool adun = true;
if(s[idx] == '-')
adun = false;
idx++;
int t = Eval_Inm_Imp();
if(adun)
sum += t;
else
sum -= t;
}
return sum;
}
int main()
{
fin >> s;
fout << Eval_Plus_Minus();
return 0;
}