Паскаль.Индексный список.

Ответить
Rexar
Сообщения: 5
Зарегистрирован: 28 ноя 2009, 22:37

Помогите пожалуйста сделать меню , у меня получается только меня которое по меткам прыгает , в процедуры программу перевести не могу.
Меню должно быть по типу :
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]

Задание выполняет а вот меню ... Не охота метки использовать .
Заранее благодарен.
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

Как то так:

Код: Выделить всё

var 
  n:integer; 
begin 
readln(n); 
case n of 
'1':// твое действие (procedure...)
'2': 
'3':
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
Rexar
Сообщения: 5
Зарегистрирован: 28 ноя 2009, 22:37

BHy4ok писал(а):Как то так:

Код: Выделить всё

var 
  n:integer; 
begin 
readln(n); 
case n of 
'1':// твое действие (procedure...)
'2': 
'3':
Как case организовано я понимаю , дело в том что я не могу программу в процедуры перевести , а если не переводить то будет куча label по которым case будет прыгать ...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А в чем сложность перевести программу в процедуры?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Rexar
Сообщения: 5
Зарегистрирован: 28 ноя 2009, 22:37

Хыиуду писал(а):А в чем сложность перевести программу в процедуры?
Ну в случае обычного списка не в чём , но именно с этим кодом у меня возникли проблемы ..
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Подскажите где ошибка :

[syntax="pascal"]
uses crt;
type pp=^elem;
elem=record
inf1:word;
inf2:byte;
adr :p p;
end;
var ptb,pte,pt :p p;
i:integer;a,b,k:byte;
c:word;
x:array[1..2] of pp;
function f( k:word;q:byte):byte;
begin
if k=q then f:=1 else f:=2
end;

function make :p p;
begin
randomize;
for i:=1 to 2 do x:=nil;
for i:=1 to 11 do
begin
c:=random(10);
b:=random(10);
a:=f(b,c);
if x[a]=nil then begin
new(x[a]);
pt:=x[a] end else
begin
pt:=x[a];
while pt^.adr<>nil do
pt:=pt^.adr;
new(pt^.adr);
pt:=pt^.adr;end;
pt^.inf1:=b;
pt^.inf2:=c;
pt^.adr:=nil;
end;
make:=ptb;
end;
function show :p p;
begin
for i:=1 to 2 do begin
if x=nil then continue;
pt:=x;
writeln('Pidspusok N :',i:3);
while pt<>nil do
begin
write('(',pt^.inf1:3,pt^.inf2:3,')');
pt:=pt^.adr;
end;
writeln;
end;end;
begin
clrscr;
readln(k);
while true do
case k of
1:make;
2:show;
3:break;end;
readkey;end.
[/syntax]
Ответить