Программа
{ Список }
PROGRAM AirLinerReserver(input,output);
CONST QuantityPlace=5; { Количество мест в ряду }
QuantityLine=10; { Количество рядов в салоне }
TYPE Place=packed array[1..3] of char; { Тип - место }
LineType=array[1..QuantityPlace] of Place; { Тип - ряд }
AirLinerType=^LineRec; { Тип - ссылка на ряд }
LineRec=record { Тип - элемент списка }
Line:LineType;
Next,Pred:AirLinerType
end;
VAR AirLiner:AirLinerType; { Самолет }
P:Place; { Переменная - место }
PROCEDURE ReservePlase(var F:AirLinerType); { Процедура резервирования мест }
Var Buf:AirLinerType; { Буфер для создания элемента списка }
j:1..QuantityLine; { Счетчик рядов в салоне }
i:1..QuantityPlace; { Счетчик мест в ряду }
k:1..3; { Счетчик символов при вводе инициалов }
Begin
Randomize;
F:=nil; { Сброс ссылки списка }
for j:=1 to QuantityLine do { Цикл резервирования по самолету }
begin
New(Buf); { Создание элемента списка }
for i:=1 to QuantityPlace do { Цикл резервирования по ряду }
begin
for k:=1 to 3 do Buf^.Line[i][k]:=Chr(Random(26)+Ord('A'));
{ Резервирование места: }
(* Write('Введите инициалы пассажира для места ',QuantityLine-j+1,'/',i,' ');
{ Вывод подсказки }
for k:=1 to 3 do Read(Buf^.Line[i][k]); { Ввод "пассажира" }
ReadLn { Пропуск конца строки } *)
end;
{ Вставка в список: }
Buf^.Next:=F;
Buf^.Pred:=nil;
if F<>nil then F^.Pred:=Buf;
F:=Buf
end
End;
PROCEDURE ViewAirLiner(F:AirLinerType); { Процедура просмотра салона }
Var i:0..QuantityLine; { Счетчик рядов }
j:1..QuantityPlace; { Счетчик мест в ряду }
Begin
i:=0; { Начальное определение счетчика рядов }
while F<>nil do { Цикл просмотра салона }
begin
i:=i+1; { Переопределение счетчика рядов }
Write(i:2,' '); { Вывод номера ряда }
for j:=1 to QuantityPlace do Write(' [',F^.Line[j],'] '); { Вывод места }
WriteLn; { Вывод конца строки }
F:=F^.Next { Переход к следующему ряду }
end;
End;
PROCEDURE GetPlace(F:AirLinerType;L,P:integer;var Answer:Place);
{ Процедура выборки значения места }
var i:integer; { Счетчик цикла }
Begin
for i:=2 to L do F:=F^.Next; { Продвижение по списку до заданного ряда }
Answer:=F^.Line[P]; { Определение значения места }
End;
PROCEDURE DisposerList(var L:AirLinerType); { Процедура удаления списка }
Begin
if L<>nil then begin { Если переменная существует, то }
DisposerList(L^.NEXT); { удаление хвоста списка }
Dispose(L); { удаление переменной }
L:=nil { Переопределение ссылки }
end
End;
BEGIN
WriteLn; { Пропуск строки }
ReservePlase(AirLiner); { Резервирование }
WriteLn; { Пропуск строки }
ViewAirLiner(AirLiner); { Просмотр }
WriteLn; { Пропуск строки }
GetPlace(AirLiner,7,QuantityPlace div 2 +1,P); { Получение значения места }
WriteLn('Место ',7,'/',QuantityPlace div 2 +1,': [',P,']'); { Вывод значения места }
GetPlace(AirLiner,QuantityLine,QuantityPlace div 2 +1,P); { Получение значения места }
WriteLn('Место ',QuantityLine,'/',QuantityPlace div 2 +1,': [',P,']'); { Вывод значения места }
DisposerList(AirLiner)
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию