Kalkulator RPN - Free Pascal


(langus14) #1

Siemka

napisałem kalkulator choć nie wiem gdzie leży w tym całym programie bład niby że pokazuje że "nastos" a ja tam nic nie widze ;o ;/.

program calcRPN;

uses strings,math,crt;

var

stos:array[1..8] of real;


procedure nastos(liczba:real);


begin

  stos[8]:=(stos[7]);

  stos[7]:=(stos[6]);

  stos[6]:=(stos[5]);

  stos[5]:=(stos[4]);

  stos[4]:=(stos[3]);

  stos[3]:=(stos[2]);

  stos[2]:=(stos[1]);

  stos[1]:=liczba;

end;


procedure pokazstos;

var i:integer;

begin

for i:=1 to 8 do

 writeln('stos[',i,']=',stos[i]);


end;


 function zestosu():real;

var liczba:real;

begin

 liczba:=stos[1];

 stos[1]:=(stos[2]);

 stos[2]:=(stos[3]);

 stos[3]:=(stos[4]);

 stos[4]:=(stos[5]);

 stos[5]:=(stos[6]);

 stos[6]:=(stos[7]);

 stos[7]:=(stos[8]);

 stos[8]:=0;

 zestosu:=liczba;

end;


procedure rotstos;

var a:real;

begin

a:=stos[8];

 stos[8]:=(stos[7]);

 stos[7]:=(stos[6]);

 stos[6]:=(stos[5]);

 stos[5]:=(stos[4]);

 stos[4]:=(stos[3]);

 stos[3]:=(stos[2]);

 stos[2]:=(stos[1]);

 stos[1]:=a;


end;


procedure invrotstos;

var a:real;

begin

 a:=stos[1];

 stos[1]:=(stos[2]);

 stos[2]:=(stos[3]);

 stos[3]:=(stos[4]);

 stos[4]:=(stos[5]);

 stos[5]:=(stos[6]);

 stos[6]:=(stos[7]);

 stos[7]:=(stos[8]);

 stos[8]:=a;


end;


var x:real;

a:string;

e:integer;

begin

a:='';

  repeat

  begin

  clrscr;

  writeln('Type: "quit" to quit ;)');

  pokazstos;

   readln(a);

   Val(a,x,e);

   if (e=0) then

   nastos(x);

  end;

  until (a='quit');

end.

z góry dzieki za pomoc :wink:


(Trzosek Pawel) #2

U mnie normalnie dziala każda liczba wskakuje na stos.