Pagini recente » Cod sursa (job #3242343) | Cod sursa (job #2689833) | Cod sursa (job #2963847) | Cod sursa (job #1322548) | Cod sursa (job #2528079)
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int i;
char s[100003];
int expresie();
int factor();
int termen();
int main(){
fin.getline(s,100001);
fout<<expresie();
return 0;
}
int expresie(){ ///= termen +- termen +- .... +-termen
int r=termen();
while(s[i]=='+' || s[i]=='-'){
if(s[i]=='+')
i++,r+=termen();
else i++,r-=termen();
}
return r;
}
int termen(){ ///= factor */ factor */ ... */ factor
int r=factor();
while(s[i]=='*' || s[i]=='/'){
if(s[i]=='*')
i++,r*=factor();
else i++,r/=factor();
}
return r;
}
int factor(){ ///constanta sau alta expresie
int r=0;
if(s[i]=='('){
i++;
r=expresie();
i++; ///inchid paranteza rounda
}
else while(s[i]>='0' && s[i]<='9')
r=r*10+s[i++]-'0';
return r;
}