Cod sursa(job #1075567)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 9 ianuarie 2014 10:49:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");

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

int i;
char s[100100];

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

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

int factor () {
	int r;
	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 () {
	
	fin>>s;
	fout<<expresie();
	
	return 0;
}