Pagini recente » Borderou de evaluare (job #1479636) | Borderou de evaluare (job #2570713) | Borderou de evaluare (job #2169357) | Borderou de evaluare (job #2074196) | Cod sursa (job #3274245)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i = 0;
string s;
inline int grad1();
inline int grad2();
inline int grad3();
inline int grad1() {
int rez;
if(s[i] == '-') rez = -grad2();
else rez = grad2();
while(s[i] == '+' || s[i] == '-') {
if(s[i] == '+') {
i++;
rez += grad2();
}
else {
i++;
rez -= grad2();
}
}
return rez;
}
inline int grad2() {
int rez = grad3();
while(s[i] == '*' || s[i] == '/') {
if(s[i] == '*') {
i++;
rez *= grad3();
}
else {
i++;
rez /= grad3();
}
}
return rez;
}
inline int grad3() {
int rez = 0;
if(s[i] == '(') {
i++; /// (
rez = grad1();
i++; /// )
}
else {
while(isdigit(s[i])) rez = 10 * rez + s[i++] - '0';
}
return rez;
}
signed main()
{
getline(fin, s);
fout << grad1();
return 0;
}