Cod sursa(job #3157426)

Utilizator TheEpicWipedCreaVlad Chirita Alexandru TheEpicWipedCrea Data 15 octombrie 2023 15:34:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in  ("evaluare.in");
ofstream out("evaluare.out");

string s;
int pos;

int add();

int fact(){
	int x=0;
	if(s[pos]=='('){
		++pos;
		x=add();
		++pos;
	}
	else{
		while(s[pos]>='0' && s[pos]<='9'){
			x*=10;
			x+=s[pos]-'0';
			pos++;
		}
	}
	return x;
}

int mult(){
	int res=fact();
	while(pos<s.size() && (s[pos]=='*' || s[pos]=='/')){
		if(s[pos]=='*'){
			++pos;
			res*=fact();
		}
		else{
			++pos;
			res/=fact();
		}
	}
	return res;
}

int add(){
	int res=mult();
	while(pos<s.size() && (s[pos]=='+' || s[pos]=='-')){
		if(s[pos]=='+'){
			++pos;
			res+=mult();
		}
		else{
			++pos;
			res-=mult();
		}
	}
	return res;
}

int main(){
	in>>s;
	out<<add();
}