Pagini recente » Cod sursa (job #1394553) | Cod sursa (job #1281679) | Cod sursa (job #1517866) | Cod sursa (job #280164) | Cod sursa (job #2136869)
#include <stdio.h>
#include <stdlib.h>
char exp[100001];
int i = 0;
int expresie();
int termen();
int factor();
int expresie() {
int s = termen();
if ( exp[i] == '+' ) {
i++;
s += termen();
}
if ( exp[i] == '-' ) {
i++;
s -= termen();
}
return s;
}
int termen() {
int p = factor();
if ( exp[i] == '*' ) {
i++;
p *= factor();
}
if ( exp[i] == '/' ) {
i++;
p /= factor();
}
return p;
}
int factor() {
int val = 0, semn = 1;
if ( exp[i] == '-' ) {
semn = -1;
i++;
}
if ( exp[i] == '(' ) {
i++;
val = expresie();
i++;
return semn * val;
}
while ( exp[i] >= '0' && exp[i] <= '9' ) {
val = val * 10 + ( exp[i++] - '0' );
}
return semn * val;
}
int main() {
FILE *fin, *fout;
int n = 0;
fin = fopen( "evaluare.in", "r" );
fout = fopen( "evaluare.out", "w" );
exp[n] = fgetc( fin );
while ( exp[n] != '\n' ) {
exp[++n] = fgetc( fin );
}
fprintf( fout, "%d", expresie() );
fclose( fin );
fclose( fout );
return 0;
}