program ideone;
type
PMenu=^TMenu;
TProc=procedure(menu:PMenu);
TMenu=record
Text:String;
Proc:TProc;
Menu:PMenu;
end;
procedure RunMenu(menu:PMenu);
var P,N:Word;
var tmp:PMenu;
begin
while true do
begin
N:=1;
tmp:=menu;
while tmp^.Proc<>nil do
begin
WriteLn(N,': ',tmp^.Text);
tmp:=tmp+1;
Inc(N);
end;
WriteLn('0: ',tmp^.Text);
Write('Wybór: ');
ReadLn(P);
if P<N then
begin
if P=0 then Exit;
tmp:=menu+(P-1);
WriteLn;
WriteLn('Wybrano menu: ',tmp^.Text);
tmp^.Proc(tmp^.Menu);
WriteLn;
end
else WriteLn('Nie ma takiej opcji');
end;
end;
procedure Dodaj(menu:PMenu);
begin
WriteLn('Dodawanie');
end;
procedure Pokaz(menu:PMenu);
begin
WriteLn('Pokazywanie');
end;
procedure Usun(menu:PMenu);
begin
WriteLn('Usuwanie');
end;
procedure SortBy1(menu:PMenu);
begin
WriteLn('Sortowanie Wg 1-go parametru');
end;
procedure SortBy2(menu:PMenu);
begin
WriteLn('Sortowanie Wg 2-go parametru');
end;
const Sort:array[0..2]of TMenu=
(
(Text:'Sortuj wg 1';Proc:@SortBy1),
(Text:'Sortuj wg 2';Proc:@SortBy2),
(Text:'Wróć';Proc:nil)
);
const Main:array[0..4]of TMenu=
(
(Text:'Dodaj';Proc:@Dodaj),
(Text:'Sortuj';Proc:@RunMenu;Menu:@Sort[0]),
(Text:'Pokaż';Proc:@Pokaz),
(Text:'Usuń';Proc:@Usun),
(Text:'Koniec';Proc:nil)
);
begin
RunMenu(@Main[0]);
end.
cHJvZ3JhbSBpZGVvbmU7Cgp0eXBlCiAgUE1lbnU9XlRNZW51OwogIFRQcm9jPXByb2NlZHVyZShtZW51OlBNZW51KTsKICBUTWVudT1yZWNvcmQKICAgIFRleHQ6U3RyaW5nOwogICAgUHJvYzpUUHJvYzsKICAgIE1lbnU6UE1lbnU7CiAgZW5kOwoKcHJvY2VkdXJlIFJ1bk1lbnUobWVudTpQTWVudSk7CnZhciBQLE46V29yZDsKdmFyIHRtcDpQTWVudTsKYmVnaW4KICB3aGlsZSB0cnVlIGRvCiAgYmVnaW4KICAgIE46PTE7CiAgICB0bXA6PW1lbnU7CiAgICB3aGlsZSB0bXBeLlByb2M8Pm5pbCBkbwogICAgYmVnaW4KICAgICAgV3JpdGVMbihOLCc6ICcsdG1wXi5UZXh0KTsKICAgICAgdG1wOj10bXArMTsKICAgICAgSW5jKE4pOwogICAgZW5kOwogICAgV3JpdGVMbignMDogJyx0bXBeLlRleHQpOwogICAgV3JpdGUoJ1d5YsOzcjogJyk7CiAgICBSZWFkTG4oUCk7CiAgICBpZiBQPE4gdGhlbgogICAgYmVnaW4KICAgICAgaWYgUD0wIHRoZW4gRXhpdDsKICAgICAgdG1wOj1tZW51KyhQLTEpOwogICAgICBXcml0ZUxuOwogICAgICBXcml0ZUxuKCdXeWJyYW5vIG1lbnU6ICcsdG1wXi5UZXh0KTsKICAgICAgdG1wXi5Qcm9jKHRtcF4uTWVudSk7CiAgICAgIFdyaXRlTG47CiAgICBlbmQKICAgIGVsc2UgV3JpdGVMbignTmllIG1hIHRha2llaiBvcGNqaScpOwogIGVuZDsKZW5kOwoKcHJvY2VkdXJlIERvZGFqKG1lbnU6UE1lbnUpOwpiZWdpbgogIFdyaXRlTG4oJ0RvZGF3YW5pZScpOwplbmQ7Cgpwcm9jZWR1cmUgUG9rYXoobWVudTpQTWVudSk7CmJlZ2luCiAgV3JpdGVMbignUG9rYXp5d2FuaWUnKTsKZW5kOwoKcHJvY2VkdXJlIFVzdW4obWVudTpQTWVudSk7CmJlZ2luCiAgV3JpdGVMbignVXN1d2FuaWUnKTsKZW5kOwoKcHJvY2VkdXJlIFNvcnRCeTEobWVudTpQTWVudSk7CmJlZ2luCiAgV3JpdGVMbignU29ydG93YW5pZSBXZyAxLWdvIHBhcmFtZXRydScpOwplbmQ7Cgpwcm9jZWR1cmUgU29ydEJ5MihtZW51OlBNZW51KTsKYmVnaW4KICBXcml0ZUxuKCdTb3J0b3dhbmllIFdnIDItZ28gcGFyYW1ldHJ1Jyk7CmVuZDsKCmNvbnN0IFNvcnQ6YXJyYXlbMC4uMl1vZiBUTWVudT0KKAogIChUZXh0OidTb3J0dWogd2cgMSc7UHJvYzpAU29ydEJ5MSksCiAgKFRleHQ6J1NvcnR1aiB3ZyAyJztQcm9jOkBTb3J0QnkyKSwKICAoVGV4dDonV3LDs8SHJztQcm9jOm5pbCkKKTsKCmNvbnN0IE1haW46YXJyYXlbMC4uNF1vZiBUTWVudT0KKAogIChUZXh0OidEb2Rhaic7UHJvYzpARG9kYWopLAogIChUZXh0OidTb3J0dWonO1Byb2M6QFJ1bk1lbnU7TWVudTpAU29ydFswXSksCiAgKFRleHQ6J1Bva2HFvCc7UHJvYzpAUG9rYXopLAogIChUZXh0OidVc3XFhCc7UHJvYzpAVXN1biksCiAgKFRleHQ6J0tvbmllYyc7UHJvYzpuaWwpCik7CgpiZWdpbgogIFJ1bk1lbnUoQE1haW5bMF0pOwplbmQu