Pagini recente » Cod sursa (job #306381) | Cod sursa (job #654134) | Cod sursa (job #2901272) | Cod sursa (job #2046822) | Cod sursa (job #2116107)
#include <iostream>
#include <fstream>
#include <cstring>
#define MAXC 100001
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char exp[MAXC];
int eval(int &i);
int factor(int &i){
int nr=0;
if(exp[i]=='('){
i++;
nr=eval(i);
i++;
//cout<<exp[i];
}
while(exp[i]-'0'>=0 and exp[i]-'0'<=9){
nr*=10;
nr+=exp[i]-'0';
i++;
}
return nr;
}
int termen(int &i){
int p=factor(i);
// cout<<exp[i]<<' ';
while(exp[i]=='*' or exp[i]=='/'){
if(exp[i++]=='*')
p*=factor(i);
else
p/=factor(i);
}
return p;
}
int eval(int &i){
int s;
s=termen(i);
while(exp[i]=='+' or exp[i]=='-'){
if(exp[i++]=='+')
s+=termen(i);
else
s-=termen(i);
}
return s;
}
int main(){
int i=0;
fin.get(exp,MAXC);
fout<<eval(i);
return 0;
}