Помогите решить эту задачу, не скидывайте похожую которую найдете в инете
Создать класс Train, содержащий поля :
название пункта назначения
номер поезда
время отправления
Вести данные в массив из 5 элементов типа Train, упорядочить элементы по номерам поездов. Добавить возможность ввода информации о поезде, номер которого введен пользователем. Добавить возможность сортировки массива по пункту назначения, причем поезда с одинаковыми пунктами назначения должны быть упорядочены по времени отправления.

Ответы

Ответ дал: BobbyFresnel
0

// Pascal ABC.NET

type

 Train = class

 

 private

 

   ПунктНазначения: string;

   НомерПоезда: string;

   ВремяOтправления: string;

   Информация: string;

   

   static function ЧастьНомера(s: string) := s.MatchValue('d*').ToInteger;

 

 public

 

 constructor (ПН, НП, ВО: string; И: string := '');

 begin

   ПунктНазначения := ПН;

   НомерПоезда := НП;

   ВремяOтправления := ВО;

   Информация := И

 end;

 

 static procedure УпорядочитьПункты(var a: array of Train) :=

   a := a.OrderBy(p -> p.ПунктНазначения)

       .ThenBy(p -> p.ВремяOтправления).ToArray;

   

 static procedure УпорядочитьНомера(var a: array of Train) :=

   a := a.OrderBy(p -> ЧастьНомера(p.НомерПоезда)).ToArray;  

 

 function ToString: string; override :=

     $'{ПунктНазначения,-20} {НомерПоезда,-5} {ВремяOтправления,7}' +

         $'  {Информация}';

     

end;

function ДобавитьИнформацию(Self: array of Train;

     НомерПоезда, Информация: string): boolean; extensionmethod;

begin

 Result := True;

 var i := Self.FindIndex(p -> p.НомерПоезда = НомерПоезда);

 if i >= 0 then

   Self[i].Информация := Информация

 else

   Result := False

end;

begin

 var a := new Train[5];

 a[0] := new Train('Адлер','4c','15:40');

 a[1] := new Train('Санкт-Петербург','132п','07:19');

 a[2] := new Train('Казань','8ф','12:35');

 a[3] := new Train('Новосибирск','217п','18:05');

 a[4] := new Train('Адлер','18c','08:32');

 Train.УпорядочитьНомера(a);

 a.PrintLines;

 var np := ReadlnString('Номер поезда:');

 var info := ReadlnString('Добавочная информация:');

 if not a.ДобавитьИнформацию(np, info) then

   Println('Не найден номер поезда');

 Train.УпорядочитьПункты(a);

 a.PrintLines

end.

Приложения:
Вас заинтересует