Pagini recente » Cod sursa (job #1065607) | Cod sursa (job #1664779) | Cod sursa (job #2676633) | Cod sursa (job #3301441) | Cod sursa (job #2790897)
#include <stdio.h>
#include <stdlib.h>
#define MAXLENGTH 1000
int s[MAXLENGTH],si;
int adunare();
int factor(){
int r = 0;
if(s[si] == '('){
si++;
r = adunare();
si++;
} else
while(s[si] >= '0' && s[si] <= '9'){
r *= 10;
r += s[si] - '0';
si ++;
}
return r;
}
int inmultire(){
int t,r;
char semn;
r = factor();
while(s[si] == '*' || s[si] == '/'){
semn = s[si];
si++;
t = factor();
if(semn == '*')
r *= t;
else
r /= t;
}
return r;
}
int adunare(){
int t,r;
char semn;
r = inmultire();
while(s[si] == '+' || s[si] == '-'){
semn = s[si];
si++;
t = inmultire();
if(semn == '+')
r += t;
else
r -= t;
}
return r;
}
int main(){
FILE *fin, *fout;
fin = fopen("evaluare.in","r");
si = 0;
s[0] = fgetc(fin);
while(s[si] != '\n'){
si++;
s[si] = fgetc(fin);
}
si = 0;
fclose(fin);
fout = fopen("evaluare.out","w");
fprintf(fout,"%d\n",adunare());
fclose(fout);
return 0;
}