Pagini recente » Cod sursa (job #2522773) | Cod sursa (job #887096) | Cod sursa (job #321262) | Cod sursa (job #2325511) | Cod sursa (job #2789108)
#include <stdio.h>
#include <ctype.h>
#define N 100000
#define NCH 127
char exp[N];
int poz;
int adunare();
int produs();
int factor();
int adunare() {
int sum;
sum = produs();
while ( exp[poz] == '+' || exp[poz] == '-' ) {
switch( exp[poz] ) {
case '+':
poz ++;
sum += produs();
break;
case '-':
poz ++;
sum -= produs();
break;
}
}
return sum;
}
int produs() {
int prod;
prod = factor();
while ( exp[poz] == '*' || exp[poz] == '/' ) {
switch( exp[poz] ) {
case '*':
poz ++;
prod *= factor();
break;
case '/':
poz ++;
prod /= factor();
break;
}
}
return prod;
}
int factor() {
int nr;
if ( exp[poz] == '(' ) {
poz ++;
nr = adunare();
poz ++;
return nr;
}
nr = 0;
while ( isdigit( exp[poz] ) ) {
nr = nr * 10 + exp[poz] - '0';
poz ++;
}
return nr;
}
int main() {
FILE *fin, *fout;
fin = fopen( "evaluare.in", "r" );
fgets( exp, N, fin );
fclose( fin );
fout = fopen( "evaluare.out", "w" );
fprintf( fout, "%d\n", adunare() );
fclose( fout );
return 0;
}