Cod sursa(job #616808)

Utilizator selea_teodoraSelea Teodora selea_teodora Data 13 octombrie 2011 13:59:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <stdio.h>
using namespace std;
 
char s[100005];
int subexpresie();
int inmultire_impartire();
int i;

int adunare_scadere() {
int r = inmultire_impartire();
while ( s[i]=='+' || s[i]=='-' ) {
switch ( s[i] ) {
case '+':
		++i;                        
        r +=inmultire_impartire ();
		break;
case '-':
		++i;                        
		r -= inmultire_impartire();
        break;
      }
	}
return r;
}
 
int inmultire_impartire() {
int r = subexpresie();
while ( s[i]=='*' || s[i]=='/' ) {
switch ( s[i] ) {
case '*' :
++i;
r *= subexpresie();
break;
case '/':
++i;
r /= subexpresie();
break;
}
}
return r;
}
 
int subexpresie() {
int r=0; 
if ( s[i] == '(' ) {                      
++i;                                
r = adunare_scadere();
++i;                                
} else { 
while ( s[i]>='0' && s[i]<='9' )  {       
r = r*10 + s[i] - '0'; 
++i;
}
} 
return r;
}
int main() {
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
fgets(s, 100005, stdin);
int r;
r=adunare_scadere();
printf("%d\n", r); 
return 0;
}