Pagini recente » Cod sursa (job #2564165) | Cod sursa (job #1809091) | Cod sursa (job #1770913) | Cod sursa (job #2257039) | Cod sursa (job #1820470)
#include <stdio.h>
#define lim 100005
char s[lim];
int k;
int expr();
int term();
int fact();
int expr(){
int rez;
rez=term();
while(s[k]=='+'||s[k]=='-'){
if(s[k]=='+'){
k++;
rez=rez+term();
}
else{
k++;
rez=rez-term();
}
}
return rez;
}
int term(){
int rez;
rez=fact();
while(s[k]=='*'||s[k]=='/'){
if(s[k]=='*'){
k++;
rez=rez*fact();
}
else{
k++;
rez=rez/fact();
}
}
return rez;
}
int fact(){
int rez;
if(s[k]=='('){
k++;
rez=expr();
k++;
}
else{
rez=0;
while(s[k]>='0'&&s[k]<='9'){
rez=rez*10+s[k]-'0';
k++;
}
}
return rez;
}
int main(){
FILE *fin,*fout;
fin=fopen("evaluare.in","r");
fout=fopen("evaluare.out","w");
int rez,k=0;
s[k]=fgetc(fin);
while(s[k]!=EOF&&s[k]!='\n'&&s[k]!=' '){
k++;
s[k]=fgetc(fin);
}
k=0;
rez=expr();
fprintf(fout,"%d",rez);
fclose(fin);
fclose(fout);
return 0;
}