Паскаль.Индексный список.
Добавлено: 28 ноя 2009, 22:46
Помогите пожалуйста сделать меню , у меня получается только меня которое по меткам прыгает , в процедуры программу перевести не могу.
Меню должно быть по типу :
1. Создать список
2. Вывести список
3. Выполнить задание (там вывести записи с одинаковыми полями)
4. Выйти.
[syntax="pascal"]
uses crt;
const n=11;
type pt=^el;
el=record
inf1:byte;
inf2:word;
ad:pt;end;
var x:array[0..n] of pt;
tmp:pt;
a,b,i,c:word;
function f(k,q:byte):byte;
begin
if k=q then f:=1 else f:=2
end;
begin
randomize;clrscr;
writeln;writeln('Elementu zapusiv :');writeln;
for i:=0 to n do x:=nil;
for i:=1 to 20 do begin
c:=random(10);
b:=random(10);
write('(',b:3,c:3,')');
a:=f(b,c);
if x[a]=nil then begin
new(x[a]);
tmp:=x[a] end else
begin
tmp:=x[a];
while tmp^.ad<>nil do
tmp:=tmp^.ad;
new(tmp^.ad);
tmp:=tmp^.ad;
end;
tmp^.inf1:=b;
tmp^.inf2:=c;
tmp^.ad:=nil;
end;
writeln;writeln('Output pidspisku:');
writeln;
for i:=0 to 2 do begin
if x=nil then continue;
tmp:=x;
writeln('Pidspusok N :',i:3);
while tmp<>nil do
begin
write('(',tmp^.inf1:3,tmp^.inf2:3,')');
tmp:=tmp^.ad;
end;
writeln;
end;
readln;
end.[/syntax]
Задание выполняет а вот меню ... Не охота метки использовать .
Заранее благодарен.
Меню должно быть по типу :
1. Создать список
2. Вывести список
3. Выполнить задание (там вывести записи с одинаковыми полями)
4. Выйти.
[syntax="pascal"]
uses crt;
const n=11;
type pt=^el;
el=record
inf1:byte;
inf2:word;
ad:pt;end;
var x:array[0..n] of pt;
tmp:pt;
a,b,i,c:word;
function f(k,q:byte):byte;
begin
if k=q then f:=1 else f:=2
end;
begin
randomize;clrscr;
writeln;writeln('Elementu zapusiv :');writeln;
for i:=0 to n do x:=nil;
for i:=1 to 20 do begin
c:=random(10);
b:=random(10);
write('(',b:3,c:3,')');
a:=f(b,c);
if x[a]=nil then begin
new(x[a]);
tmp:=x[a] end else
begin
tmp:=x[a];
while tmp^.ad<>nil do
tmp:=tmp^.ad;
new(tmp^.ad);
tmp:=tmp^.ad;
end;
tmp^.inf1:=b;
tmp^.inf2:=c;
tmp^.ad:=nil;
end;
writeln;writeln('Output pidspisku:');
writeln;
for i:=0 to 2 do begin
if x=nil then continue;
tmp:=x;
writeln('Pidspusok N :',i:3);
while tmp<>nil do
begin
write('(',tmp^.inf1:3,tmp^.inf2:3,')');
tmp:=tmp^.ad;
end;
writeln;
end;
readln;
end.[/syntax]
Задание выполняет а вот меню ... Не охота метки использовать .
Заранее благодарен.