All pastes #439660 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-14 13:04 UTC
rendered paste body
with ada.integer_text_io; use ada.integer_text_io;
with P_pile;

procedure evalue is

	package pile_int is new P_pile(integer); use pile_int;

	function post_fix return integer is

	type Tvect is array (integer range <>) of character;
	vect:Tvect:=('4',' ','2','5','+');
	p:Tpile;
	d1,d2:integer;
	nb:integer:=0;
	resultat:integer:=0;

	begin

		creer(p);
		for I in vect'range
		loop
			if (vect(I)/='+' and vect(I)/='-' and vect(I)/='*' and vect(I)/='/') 
			then
				if vect(I)>='0' and vect(I)<='9'
				then
--					nb:=nb*10+vect'pos(vect(I)-vect'pos('0'));
					nb:=nb*10+(character'pos(vect(I))-character'pos('0'));
				else
					empile(p,nb);
					nb:=0;
				end if;
			else
--
				empile(p,nb);
--
				d1:=v_sommet(p);
				depile(p);
				d2:=v_sommet(p);
				depile(p);
				
				case vect(I) is
					when '+' => resultat:=d1+d2;
					when '-' => resultat:=d2-d1;
					when '*' => resultat:=d1*d2;
					when '/' => resultat:=d2/d1;
					when others => null;
				end case;
				empile(p,resultat);
			end if;
		end loop;

		return resultat;
	
	end post_fix;

begin

put(post_fix);

end evalue;