Cod sursa(job #2635340)

Utilizator etohirseCristi Cretu etohirse Data 14 iulie 2020 10:38:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;
#define int long long
char s[100003], *p=s;
int i;

int eval1();
int eval2();
int eval(){
	int rez=eval1();
	while(*p=='+'||*p=='-'){
		if(*p=='+'){
			++p;
			rez+=eval1();
		}
		else{
			++p;
			rez-=eval1();
		}
	}
	return rez;
}
int eval1(){
	int rez=eval2();
	while(*p=='*'||*p=='/'){
		if(*p=='*'){
			++p;
			rez*=eval2();
		}
		else {
			++p;
			rez/=eval2();
		}
	}
	return rez;
}
int eval2(){
	int rez=0;
	if(*p=='('){
		++p;
		rez=eval();
		++p;
	}
	else while(isdigit(*p)){
		rez=rez*10+*p-'0';
		++p;
	}
	return rez;
}
int32_t main(){
	ifstream cin("evaluare.in");
	ofstream cout("evaluare.out");
	cin >> s;
	cout << eval();
}