Pagini recente » Cod sursa (job #1074162) | Cod sursa (job #1357451) | Cod sursa (job #1403474) | Cod sursa (job #1139195) | Cod sursa (job #2082191)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100005];
int i = 1;
int add(int n);
int multiply(int n);
int getNumber(int n);
int add(int n){
int ret = multiply(n);
while(i <= n && (s[i] == '+' || s[i] == '-')){
i++;
if(s[i - 1] == '+'){
ret += multiply(n);
}else{
ret -= multiply(n);
}
}
return ret;
}
int multiply(int n){
int ret = getNumber(n);
while(i <= n && (s[i] == '*' || s[i] == '/')){
i++;
if(s[i - 1] == '*'){
ret *= getNumber(n);
}else{
ret /= getNumber(n);
}
}
return ret;
}
int getNumber(int n){
int ret;
if(s[i] == '('){
i++;
ret = add(n);
i++;
}else{
ret = 0;
while(i <= n && '0' <= s[i] && s[i] <= '9'){
ret = ret * 10 + (s[i] - '0');
i++;
}
}
return ret;
}
int main(){
fin >> s + 1;
int n = strlen(s + 1);
fout << add(n);
return 0;
}