Możecie sprawdzić czy dobrze zrobiłem dodawanie/usuwanie/wyświetlanie na stosie oraz możecie mi pomóc z sortowaniem według pesala, bo średnio wiem jak się za to zabrać.
program Stack;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
lista = ^tlista;
tlista = record
imie: string[20];
nazwisko: string[30];
wiek: byte;
PESEL: string;
wsk: lista;
end;
var
pocz: lista;
menu: integer;
procedure dodaj(var pocz:lista);
var
nowy: lista;
begin
new(nowy);
writeln('Podaj imie, nazwisko, wiek i pesel');
write('Imie: '); readln(nowy^.imie);
write('Nazwisko: '); readln(nowy^.nazwisko);
write('Wiek: '); readln(nowy^.wiek);
write('Pesel: '); readln(nowy^.PESEL);
if (pocz=nil) then nowy^.wsk:=nil else nowy^.wsk:=pocz;
pocz:=nowy;
end;
procedure usun (var pocz:lista);
var
del:lista;
begin
new (del);
del:=pocz;
pocz:=pocz^.wsk;
dispose(del);
end;
procedure wyswietl(pocz:lista); // wyswietlanie bez var!
begin
if (pocz=nil) then writeln('Stos jest pusty!');
while(pocz<>nil) do begin
writeln(pocz^.imie);
writeln(pocz^.nazwisko);
writeln(pocz^.wiek);
writeln(pocz^.PESEL);
writeln;
pocz:=pocz^.wsk;
end;
end;
procedure wyswietl2(pocz:lista);
var
a,b: integer;
begin
while(pocz<>nil) do begin
a:=length(pocz^.imie);
b:=length(pocz^.nazwisko);
if (b > a) then begin
writeln(pocz^.imie);
writeln(pocz^.nazwisko);
writeln(pocz^.wiek);
writeln(pocz^.PESEL);
writeln;
end;
pocz:=pocz^.wsk;
end;
end;
procedure sortowanie(var pocz:lista);
var
begin
pocz:=nil;
repeat
writeln(' MENU ');
writeln('-------------------------');
writeln('1. Dodaj element');
writeln('2. Usun element ze szczytu');
writeln('3. Wyswietl stos');
writeln('4. Wyswietl gdy nazwisko jest dluzsze niz imie');
writeln('5. Wyswietl posortowane wg pesel');
writeln('6. Zakoncz');
readln(menu);
writeln('-------------------------');
case (menu) of
1: dodaj(pocz);
2: usun(pocz);
3: wyswietl(pocz);
4: wyswietl2(pocz);
5: sortowanie(pocz);
end;
until(menu=6);
end.