Pagini recente » Cod sursa (job #2111513) | Cod sursa (job #1990120) | Cod sursa (job #226234) | Cod sursa (job #2299324) | Cod sursa (job #2875230)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
long long termen(char[1000005], int&);
long long factor(char[1000005], int&);
long long eval(char s[100005], int &i){
long long u = termen(s, i);
while (s[i] == '+' || s[i] == '-') {
if(s[i] == '+'){
i++;
u += termen(s, i);
} else{
i++;
u -= termen(s, i);
}
}
return u;
}
long long termen(char s[100005], int &i){
long long t = factor(s, i);
while (s[i] == '*' || s[i] =='/' ) {
if (s[i] == '*'){
i++;
t *= factor(s, i);
} else{
i++;
t /= factor(s, i);
}
}
return t;
}
long long factor(char s[100005], int &i) {
long long f = 0;
if (s[i] == '(') {
i++;
f = eval(s, i);
i++;
} else {
while (s[i] >='0' && s[i] <='9'){
f = f * 10 + s[i] - '0';
i++;
}
}
return f;
}
int main() {
char s[100005];
in.getline(s, 100005);
int i = 0;
out << eval(s, i);
return 0;
}