Cod sursa(job #507520)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 6 decembrie 2010 12:37:16
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb

#include <cstdio>

using namespace std;

#define m 100110

char s[m];
int n;	

int op1 ();
		
		int subs (){
			
			int rez = 0;
			if( s[n] == '(' ){
				++n;
				rez = op1 ();
				++n;	
				}
				else{
					while ( s[n]>='0' && s[n]<='9' ){
						rez = rez*10 + s[n]-'0';
						++n;	
						}
					}
			return rez;
		}

	int op2 (){
		
		int rez=subs ();
		while( s[n]=='*' || s[n]=='/' ){
			if(s[n]=='*'){
				++n;
				rez*=subs ();
				}
				else{
					++n;
					rez/=subs ();
					}
			}
		return rez;
		}

int op1 (){
	
	int rez=op2 ();
	while( s[n]=='+' || s[n]=='-' ){
		if(s[n]=='+'){
			++n;
			rez+=op2 ();
			}
			else{
				++n;
				rez-=op2 ();
				}
		}
	return rez;
	}

int main ()
{
	
	freopen ("evaluare.in","r",stdin);
	freopen ("evaluare.out","w",stdout);
	fgets( s , m , stdin );
	printf("%d\n",op1());	
	
	return 0;}