Pagini recente » Cod sursa (job #2951637) | Cod sursa (job #1766060) | Cod sursa (job #2831251) | Cod sursa (job #1848920) | Cod sursa (job #2692280)
#include <stdio.h>
#include <ctype.h>
FILE *fin, *fout;
int first;
int expr();
int term();
int fact();
int fgetint();
int expr(){
int retval = term();
while( first == '+' || first == '-' ){
if( first == '+' ){
first = fgetc(fin);
retval += term();
}else{
first = fgetc(fin);
retval -= term();
}
}
return retval;
}
int term(){
int retval = fact();
while( first == '*' || first == '/' ){
if( first == '*' ){
first = fgetc(fin);
retval *= term();
}else{
first = fgetc(fin);
retval /= term();
}
}
return retval;
}
int fact(){
int retval;
if( first == '(' ){
first = fgetc(fin);
retval = expr();
first = fgetc(fin);
}else
retval = fgetint();
return retval;
}
int fgetint(){
int n = 0, semn = 1;
if( first == '-' ){
first = fgetc(fin);
semn = -1;
}
while( isdigit(first) ){
n = n * 10 + first - '0';
first = fgetc(fin);
}
return n * semn;
}
int main(){
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
first = fgetc(fin);
fprintf(fout, "%d\n", expr());
fclose(fin);
fclose(fout);
return 0;
}