Cod sursa(job #2176831)

Utilizator wilson182Alexandrina Panfil wilson182 Data 18 martie 2018 09:57:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int i=0;
string s;
ll eval();

ll factor(){
	ll r=0;
	if(s[i]=='('){
		i++;
		r=eval();
		i++;
	}else while(s[i]>='0' && s[i]<='9'){
		r*=10;
		r+=s[i]-'0';
		i++;
	}
	return r;
}
ll termen(){
	ll r=factor();
	while(s[i]=='*' || s[i]=='/'){
		i++;
		switch(s[i-1]){
			case '*' : r*=factor(); break;
			case '/' : r/=factor(); break;
		}
	}
	return r;
}
ll eval(){
	int r=termen();
	
	while(s[i]=='+'|| s[i]=='-'){
		i++;
		switch(s[i-1]){
			case '+' : r+=termen(); break;
			case '-' : r-=termen();
		}
	}
	return r;
}

int main(){
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>s;
	g<<eval();
}