Cod sursa(job #1309476)

Utilizator mariusn01Marius Nicoli mariusn01 Data 5 ianuarie 2015 19:39:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin ("evaluare.in");
ofstream fout("evaluare.out");

char s[100010];
int i;

int expresie();
int termen();
int factor();


int expresie() {
	int r;
	r = termen();
	
	while ( s[i] == '+' || s[i] == '-' ) {
		
		if (s[i] == '+') {
			i++;
			r+=termen();
		} else {
			i++;
			r-=termen();
		}
		
	}

	return r;
}


int termen() {
	int r;
	r = factor();
	
	while ( s[i] == '*' || s[i] == '/' ) {
		
		if (s[i] == '*') {
			i++;
			r*=factor();
		} else {
			i++;
			r/=factor();
		}
		
	}

	return r;
}

int factor() {
	int r = 0;
	if (s[i] == '(') {
		i++;
		r = expresie();
		i++;
	} else {
		r = 0;
		while (s[i] >= '0' && s[i] <= '9') {
			r = r*10 + s[i] - '0';
			i++;
		}
	}
	return r;
}

int main()
{
	/*
	expresie = termen1 +- termen2 +- termen3 ... +- termenn
	termen = factor1 * / factor2 * / ... * / factorm
	
	factor =  	    (expresie)
						numar
	
	*/
	
	fin>>s+1;
	
	i = 1;
	fout<<expresie()<<"\n";


    return 0;
}