Pagini recente » Cod sursa (job #1770181) | Cod sursa (job #1750466) | Cod sursa (job #2255403) | Cod sursa (job #6337) | Cod sursa (job #563092)
Cod sursa(job #563092)
#include<iostream>
#include<fstream>
using namespace std;
int expresie();
int termen();
int factor();
char s[100001];
int p;
int main() {
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",&s);
printf("%d",expresie());
return 0;
}
int expresie() {
int sum=termen();
while(s[p]=='+' || s[p]=='-') {
if(s[p]=='+') {
++p;
sum+=termen();
}
else {
++p;
sum-=termen();
}
}
return sum;
}
int termen() {
int ssum=factor();
while(s[p]=='*' || s[p]=='/') {
if(s[p]=='*') {
++p;
ssum*=factor();
}
if(s[p]=='/') {
++p;
ssum/=factor();
}
}
return ssum;
}
int factor() {
int val=0,semn=1;
if(s[p]=='-') {
++p;
semn=-1;
}
if(s[p]=='+') ++p;
if(s[p]=='(') {
++p;
val=expresie();
++p;
return val;
}
while(s[p]>='0' && s[p]<='9') {
val=val*10+s[p++]-'0';
}
return val;
}