Cod sursa(job #2583219)

Utilizator 1chiriacOctavian Neculau 1chiriac Data 17 martie 2020 21:40:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>
	
 
	
using namespace std;
	
ifstream fin ("evaluare.in");
	
ofstream fout ("evaluare.out");
	
char sir[100009];int n,p;
	
int termen () ;
	
int factor ();
	
 
	
int eval () {
	
	int r=termen();
	
	while(sir[p]=='+' || sir[p]=='-') {
	
		if(sir[p]=='+') 
	
			++p,r+=termen();
	
		else
	
			++p,r-=termen();
	
	}
	
	return r;
	
}
	
int termen () {
	
	int r=factor();
	
	while(sir[p]=='*' || sir[p]=='/') {
	
		if(sir[p]=='*')
	
			++p,r*=factor();
	
		else
	
			++p,r/=factor();
	
	}
	
	return r;
	
}
	
int factor () {
	
	int r=0;
	
	if(sir[p]=='(') {
	
		++p;r=eval();
	
		++p;
	
	}
	
	else {
	
		while(sir[p]>='0' && sir[p]<='9')
	
			r=r*10+sir[p]-'0',++p;
	
	}
	
	return r;
	
}
	
 
	
int main () {
	
	fin.getline(sir+1,100005);p=1;n=strlen(sir+1);
	
	fout<<eval();
	
	return 0;
	
}