Pagini recente » Cod sursa (job #725911) | Cod sursa (job #1814765) | Cod sursa (job #1835655) | Cod sursa (job #2808306) | Cod sursa (job #1740915)
#include<fstream>
#include<string.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char s[100001];
int val,i,l;
int evalExp();
int evalTerm();
int evalFact();
int eval(int &i){
int r=0,c;
while('0'<=s[i] && s[i]<='9'){
c=s[i]-'0';
r=r*10+c;
i++;
}
return r;
}
int evalFact(){
int r;
if (s[i]=='('){
i++;
r=evalExp();
i++;
}
else{
r=eval(i);
}
return r;
}
int evalTerm(){
int r=evalFact();
while(i<l && (s[i]=='*' || s[i]=='/')){
if (s[i]=='*') {
i++;
r=r*evalFact();
}
else{
i++;
r=r/evalFact();
}
}
return r;
}
int evalExp(){
int r=evalTerm();
while(i<l && (s[i]=='+' || s[i]=='-')){
if (s[i]=='+')
{
i++;
r=r+evalTerm();
}
else{
i++;
r=r-evalTerm();
}
}
return r;
}
int main(){
fin.get(s,100001,'\n');
fin.close();
l=strlen(s);
val=evalExp();
fout<<val;
fout.close();;
return 0;
}