Pagini recente » Cod sursa (job #3367495) | Cod sursa (job #3367480) | Atasamentele paginii Profil marius.popa1408 | Atasamentele paginii Profil blidar_lucian | Cod sursa (job #3367485)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAXN 100000
char v[MAXN];
int p;
int eval();
int factor(){
int nr;
//printf( "factor %d\n", p );
if( v[p] == '(' ){
p++;
nr = eval();
p++;
}else{
nr = 0;
while( isdigit( v[p] ) )
nr = nr * 10 + v[p++] - '0';
}
return nr;
}
int termen(){
int nr;
//printf( "termen %d\n", p );
nr = factor();
while( v[p] == '*' || v[p] == '/' ){
if( v[p++] == '*' )
nr *= factor();
else
nr /= factor();
}
return nr;
}
int eval(){
int nr;
//printf( "eval %d\n", p );
nr = termen();
while( v[p] == '+' || v[p] == '-' ){
if( v[p++] == '+' )
nr += termen();
else
nr -= termen();
}
return nr;
}
int main(){
FILE *fin, *fout;
int n, c;
fin = fopen( "evaluare.in", "r" );
n = 0;
while( ( c = fgetc( fin ) ) != '\n' )
v[n++] = c;
fclose( fin );
fout = fopen( "evaluare.out", "w" );
fprintf( fout, "%d\n", eval() );
fclose( fout );
return 0;
}