Witam,mam do napisania taki programik:
"c.5 Stos na klasach (wierzchołek ST typu PStos, PStos=^TStos;)
Dane:Liczba rzeczywista Operacje: a)Wkładanie na stos,zdejmowanie ze stosu; b)dodawanie,odejmowanie, mnożenie i dzielenie liczb z wierzchołka stosu: np function dodaj(a,b: Double): double. W programie głównym wykonać ciąg operacji z godnie z zasadą odwrotenj notacji polskiej."
I już od paru dni mam z nim problem do tej pory udało mi się wykonać podpunkt a, lecz ciagle mam problem z podpunktem b,byłbym wdzięczny za jakąkolwiek pomoc.
Oto co do tej pory mi się udało napisać
program project1;
uses crt;
var co:char;
n:integer;
type PStos = ^TStos;
TStos = class
Liczba: Byte;
Nastepny: PStos;
end;
procedure Usun(var Pocz: PStos);
var
Pom: PStos;
begin
Pom := Pocz^.Nastepny;
Dispose(Pocz);
Pocz := Pom;
end;
procedure DodajS(var Pocz: PStos; Liczba: Byte);
var
Nowy: PStos;
begin
New(Nowy);
Nowy^.Liczba := Liczba;
Nowy^.Nastepny := Pocz;
Pocz := Nowy;
end;
procedure Wypisz(Pocz: PStos);
var i: integer;
begin
while Pocz <> nil do
begin
WriteLn(i,':' ,Pocz^.Liczba);
Pocz := Pocz^.Nastepny;
i:=i+1;
end;
end;
var
Pocz: PStos;
Liczba: Byte;
code: Integer;
begin
new(Pocz);
repeat
clrscr;
writeln('d - dodaj do stosu');
writeln('u - usun element ze stosu ');
writeln('w - wypisz stos');
writeln('q - koniec');
co:=readkey;
case co of
'd': begin write('podaj wartosc: '); readln (n); DodajS(Pocz ,n); end;
'u': begin usun(Pocz); end;
'w': begin wypisz(Pocz); co:=readkey; end;
end;
until co='q';
end.