Cod sursa(job #2516105)

Utilizator Narcis09Grecu Narcis Narcis09 Data 30 decembrie 2019 13:19:41
Problema Evaluarea unei expresii Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
using namespace std;
#define dmax 10001
char s[dmax], *p=s;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

int eval();
int termen();
int factor();

int eval(){
	int r=termen();
	while (*p=='+' || *p=='-'){
		if (*p=='+'){
			++p;
			r=r+termen();
		}
		else{
			++p;
			r=r-termen();
		}
	}
	return r;
}

int termen(){
	int r=factor();
	while (*p=='*' || *p=='/'){
		if (*p=='*'){
			++p;
			r=r*factor();
		}
		else{
			++p;
			r=r/factor();
		}
	}
	return r;
}

int factor(){
	int r=0;
	if (*p=='('){
		++p;
		r=eval();
		++p;
	}
	else{
		while (*p>='0' && *p<='9'){
			r=r*10+*p-'0';
			++p;
		}
	}
	return r;
}


int main(){
	cin>>s;
	cout<<eval();
	cin.close();
	cout.close();
	return 0;
}