Cod sursa(job #1309599)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 5 ianuarie 2015 21:16:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
using namespace std;
int i;
char s[100005];
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int expresie();
int factor();
int termen();
int expresie(){
	int k;
	k = termen();
	while(s[i] == '+' || s[i] == '-'){
		if(s[i] == '+'){
			i++;
			k+= termen();
		}
		else{
			i++;
			k-= termen();
		}
	}
	return k;
}
int termen(){
	int k;
	k = factor();
	while(s[i] == '*' || s[i] == '/'){
		if(s[i] == '*'){
			i++;
			k *= factor();
		}
		else{
			i++;
			k /= factor();
		}
	}
	return k;
}
int factor(){
	int k = 0;
	if(s[i] == '('){
		i++;
		k = expresie();
		i++;
	}
	else{
		while(s[i] >= '0' && s[i] <= '9'){
			k = k * 10 + s[i] - '0';
			i++;
		}
	}
	return k;
}
int main(){
	fin>> s + 1;
	i = 1;
	fout<< expresie();
	return 0;
}