Cod sursa(job #2516107)

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

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

long long eval();
long long termen();
long long factor();

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

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

long long factor(){
	long long 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;
}