Pagini recente » Cod sursa (job #1999932) | Cod sursa (job #3138714) | Cod sursa (job #904511) | Cod sursa (job #949981) | Cod sursa (job #1670201)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char first;
FILE *fi, *fo;
int E(), T(), F(), Nr();
int main()
{
fi=fopen("evaluare.in", "r");
fo=fopen("evaluare.out", "w");
first=fgetc(fi);
fprintf(fo, "%d", E());
fclose(fi);
fclose(fo);
return 0;
}
int E(){
int s=0;
if(first=='-')
s-=T();
else
s+=T();
while(first=='+' || first=='-'){
if(first=='-'){
first=fgetc(fi);
s-=T();
}
else{
first=fgetc(fi);
s+=T();
}
first=fgetc(fi);
}
return s;
}
int T(){
int p=F();
while(first=='*' || first=='/'){
if(first=='*'){
first=fgetc(fi);
p=p*F();
}
else{
first=fgetc(fi);
p=p/F();
}
}
return p;
}
int F(){
if(first=='('){
first=fgetc(fi);
return E();
}
return Nr();
}
int Nr(){
int nr=0;
do{
nr=nr*10+first-'0';
first=fgetc(fi);
}while(isdigit(first));
return nr;
}