Pagini recente » Cod sursa (job #199531) | Cod sursa (job #2305847) | Cod sursa (job #622614) | Cod sursa (job #1047712) | Cod sursa (job #1714764)
#include <stdio.h>
#include <stdlib.h>
FILE *fin, *fout;
int curChar;
void advance(){
curChar = fgetc(fin);
}
int NUMAR(){
int val = 0;
do{
val = val * 10 + curChar - '0';
advance();
} while(curChar >= '0' && curChar <= '9');
return val;
}
int FACTOR(){
int val;
switch (curChar){
case '(':
advance();
val = EXPRESIE();
break;
case '-':
advance();
val = -FACTOR();
break;
case '+':
advance();
val = FACTOR();
break;
default:
val = NUMAR();
break;
}
return val;
}
int TERMEN(){
int val = FACTOR();
while(curChar == '*' || curChar == '/'){
if(curChar == '*'){
advance();
val *= FACTOR();
} else {
advance();
val /= FACTOR();
}
}
return val;
}
int EXPRESIE(){
int val = TERMEN();
while(curChar == '+' || curChar == '-'){
if(curChar == '+'){
advance();
val += TERMEN();
} else {
advance();
val -= TERMEN();
}
}
advance();
return val;
}
int main()
{
fin = fopen("evaluare.in", "r");
fout = fopen("evaluare.out", "w");
advance();
fprintf(fout, "%d", EXPRESIE());
fclose( fin );
fclose( fout );
return 0;
}