Pagini recente » Cod sursa (job #1518911) | Cod sursa (job #1821578) | Cod sursa (job #2368164) | Cod sursa (job #552218) | Cod sursa (job #1460208)
#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 '\0': return k;
case ')' :{
poz++;
return k;
}
}
}
int cifr(int i){
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 el(int i){
int m;
if(S[i] == '('){
m = eval(el(i+1));
}else m = cifr(i);
switch(S[poz]){
case '*': return m*el(poz+1);
case '/': return m/el(poz+1);
default: return m;
}
}
int main(){
getline(fin,S);
fout << eval(el(0));
return 0;
}