Cod sursa(job #1385257)

Utilizator ursu.daniel2202dUrsu Daniel ursu.daniel2202d Data 11 martie 2015 20:13:54
Problema Evaluarea unei expresii Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.32 kb
program evaluarea_unei_expresii_aritmetice;
var f,g:text;
	s:ansistring;
	i,n:longint;


function expresie:longint; forward;

function factor:longint;

var x:longint;

begin

	if s[i]='(' then
		begin
		  inc(i);
		  factor:=expresie;
		  inc(i);
		 end
		 		else 
		 		  begin
		 		    x:=0;
		 		    while (i<=n) and (s[i] in ['0'..'9']) do
		 		    	begin
		 		    	  x:=x*10+ord(s[i])-ord('0');
		 		    	  inc(i);
		 		    	end; 
		 		    factor:=x;
		 		  end;

end;


function termen:longint;

var x:longint;

begin

	x:=factor;
	while (i<=n) and (s[i] in ['/','*']) do
		  if s[i]='*' then
		  	begin
		  	  inc(i);
		  	  x:=x*factor;
		  	 end
		  	 		  else
		  	 		    	begin
		  	 		    	  inc(i);
		  	 		    	  x:=x div factor;
		  	 		    	end;
    termen:=x;

end;


function expresie:longint;

var x:longint;

begin

  x:=termen;
  while (i<=n) and (s[i] in ['+','-']) do 
  	  if s[i]='+' then
  	  	begin
  	  	  inc(i);
  	  	  x:=x+termen;
  	  	end
  	  			  else
  	  			    	begin
  	  			    	  inc(i);
  	  			    	  x:=x-termen;
  	  			    	end;
  expresie:=x;

end;	


BEGIN 

	assign(f,'evaluare.in');reset(f);
	read(f,s);
	close(f);

	i:=1;
	n:=length(s);
	assign(g,'evaluare.out');rewrite(g);
	write(g,expresie);
	close(g);

END.