Pagini recente » Cod sursa (job #186725) | Cod sursa (job #1134560) | Cod sursa (job #1155852) | Cod sursa (job #233049) | Cod sursa (job #1076751)
#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 rez;
if( s[ p ] == '(' ){
p++;
rez = exp ();
p++;
return rez;
}
rez = 0;
while ( s[ p ] >= '0' && s[ p ] <= '9' ){
rez *= 10;
rez += s[ p ] - '0';
p++;
}
return rez;
}
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;
}