Задача. Составить программу продажи билетов на пароход. Пусть места на пароходе нумеруются (для простоты) от 1 до n (n < 250). Покупатель заказывает номера мест. Если они свободны, то ему выдаются билеты, и номера мест исключаются из числа свободных. В противном случае предлагаются номера свободных мест. Если все билеты проданы, то начинается путешествие. Решение.
Program Teploxod;
Const
N=250; {На время отладки назначьте небольшое N!}
Type
Mesta = Set Of 1..N;
Var
Sm,Zak : Mesta;{Свободные места и заказ}
I,Nom : Integer;
Begin
Sm := [1..N];{п. 1, свободные места}
Repeat
WriteLn;
Writeln(’ Cвободные места: ’);
For I:=1 To N Do
If I In Sm Then
Write (I:4);
WriteLn;
Zak := [];
{Формирование Заказа}
Writeln(’Введите номера мест, которые Вы покупаете. ’,
’Конец заказа - ноль’);
ReadLn(Nom);
While Nom <> 0 Do
Begin
Zak := Zak + [Nom];
ReadLn(Nom);
End;
If Zak <= Sm Then
Begin
Writeln(’Заказ принят’);
Sm := Sm - Zak;
End
Else
WriteLn(’Заказ не принят. ’,
’Некоторые из заказываемых мест уже проданы.’);
Until Sm=[];
Writeln (’Все билеты проданы, нажмите Enter’);
Readln;
End.