Pagini recente » Cod sursa (job #3271721) | Cod sursa (job #1147492) | Cod sursa (job #2594635) | Cod sursa (job #1793454) | Cod sursa (job #2937078)
#include <bits/stdc++.h>
using namespace std;
struct E {
string t;
int ind;
E(string tmp) {
t = tmp;
ind = 0;
}
int nr() {
int tmp = 0;
while(t[ind] >= '0' and t[ind] <= '9')
tmp = tmp * 10 + (t[ind++] - '0');
return tmp;
}
int sm() {
int tmp = 0;
if(t[ind] == '(') ind++, tmp = e(), ind++;
else tmp = nr();
return tmp;
}
int pr() {
int tmp = sm();
while(t[ind] == '*' or t[ind] == '/')
t[ind++] == '*' ? tmp *= sm() : tmp /= sm();
return tmp;
}
int e() {
int tmp = pr();
while(t[ind] == '+' or t[ind] == '-')
t[ind++] == '+' ? tmp += pr() : tmp -= pr();
return tmp;
}
};
int main() {
ifstream f("evaluare.in");
ofstream g("evaluare.out");
string t; f >> t;
E expr(t); g << expr.e();
return 0;
}