Pagini recente » Cod sursa (job #1699178) | Cod sursa (job #236575) | Cod sursa (job #463780) | Cod sursa (job #1377912) | Cod sursa (job #1076754)
#include <stdio.h>
#define LENGHT 100000
int exp ();
int term ();
int fact ();
char s [ LENGHT ];
int p;
int exp (){
int rez = term ();
while ( s[ p ] == '+' || s[ p ] == '-' ){
if ( s[ p ] == '+' ){
p++;
rez += term ();
}
else{
p++;
rez -= term ();
}
}
return rez;
}
int term (){
int rez;
rez = fact ();
while ( s[ p ] == '*' || s[ p ] == '/' ){
if ( s[ p ] == '*' ){
p++;
rez *= fact ();
}
else {
p++;
rez /= fact ();
}
}
return rez;
}
int fact (){
int minus = 1, rez;
if( s[ p ] == '(' ){
p++;
while ( s[ p ] == '-' ){
minus = -minus;
p++;
}
rez = exp ();
rez *= minus;
p++;
return rez;
}
while ( s[ p ] == '-' ){
minus = -minus;
p++;
}
rez = 0;
while ( s[ p ] >= '0' && s[ p ] <= '9' ){
rez *= 10;
rez += s[ p ] - '0';
p++;
}
return rez * minus;
}
int main()
{
FILE *in = fopen ( "evaluare.in", "r" );
char ch = fgetc ( in );
int ind = 0;
while ( ch != EOF && ch != '\n' ){
s [ ind ] = ch;
ind++;
ch = fgetc ( in );
}
fclose ( in );
FILE *out = fopen ( "evaluare.out", "w" );
fprintf ( out, "%d", exp () );
fclose ( out );
return 0;
}