Cod sursa(job #157691)

Utilizator catalina5catalina serban catalina5 Data 13 martie 2008 10:54:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream.h>
#include<ctype.h>
long i;
char s[100005];
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
long long  factor();
long long termen();
long long evaluare(){
	long long rez=termen();
	while(s[i]=='+'||s[i]=='-')
		if(s[i++]=='+')
			rez+=termen();
		else
			rez-=termen();
	return rez;
}
long long termen(){
	long long rez=factor();
	while(s[i]=='*'||s[i]=='/')
		if(s[i++]=='*')
			rez*=factor();
		else
			rez/=factor();
	return rez;
}
long long factor(){
	long long rez=0;
	if(s[i]=='('){
		i++;
		rez=evaluare();
		i++;
		return rez;
	}
	while(isdigit(s[i])!=0)
		rez=rez*10+s[i++]-'0';
	return rez;
}
int main(){
	fin>>s;
	fout<<evaluare();
	fin.close();
	fout.close();
	return 0;
}