Pagini recente » Cod sursa (job #1745972) | Cod sursa (job #2103286) | Cod sursa (job #844981) | Cod sursa (job #133500) | Cod sursa (job #1460052)
#include <fstream>
#include <iostream>
#include <cstring>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string S;
int poz;
int el(int i);
int eval(int k){
switch(S[poz]){
case '+' : return k + eval(el(poz+1));
case '-' : return k - eval(el(poz+1));
case '*' : return eval(k*el(poz+1));
case '/' : return eval(k/el(poz+1));
case '\0': return k;
case ')' :{
poz++;
return k;
}
}
}
int el(int i){
if(S[i] == '('){
return eval(el(i+1));
}else{
int rs = 0;
for(; int(S[i]) >= 48 && int(S[i]) <= 57;i++){
rs*=10;
rs+=int(S[i]) - 48;
}
poz = i;
return rs;
}
}
int main(){
getline(fin,S);
fout << eval(el(0));
return 0;
}