Pagini recente » Istoria paginii runda/oni17_11_12_z1/clasament | Cod sursa (job #997952) | morning_training | Istoria paginii runda/infojobs/clasament | Cod sursa (job #572148)
Cod sursa(job #572148)
#include<fstream.h>
int expresie();
int termen();
int factor();
char s[100010],*p;
int main(){
ifstream f("evaluare.in");
ofstream g("evaluare.out");
f>>s;
p=s;
g<<expresie();
return 0;
}
int expresie(){
int r=termen();
while(*p=='+'||*p=='-')
if(*p=='+'){
p++;
r+=termen();
}
else{
p++;
r-=termen();
}
return r;
}
int termen(){
int r=factor();
while(*p=='*'||*p=='/')
if(*p=='*'){
p++;
r*=factor();
}
else{
p++;
r/=factor();
}
return r;
}
int factor(){
int r;
if(*p=='('){
p++;
r=expresie();
p++;
}
else{
r=0;
while(*p>='0'&&*p<='9'){
r=r*10+*p-'0';
p++;
}
}
return r;
}