|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Упорядочить по водителю
hdC0e5cSZvk.jpg
Упорядочить по водителю. Вывести информацию об автомобилях с заданным типом кузова и цветом. Помогите написать ф-цию в главной программе Код:
unit Un_Avtopark; interface uses Classes, Un_Avto; Type TAvtopark=class private name:string; FList:TList; public Constructor Create(file_name:string); Procedure Print(); Procedure Sort(); Destructor Destroy; override; property List:TList read FList; end; implementation Constructor TAvtopark.Create(file_name:string); var t:TextFile; who_is:char; p:TAvto; begin inherited Create; AssignFile(t,file_name); Reset(t); readln(t,name); FList:=TList.Create; while not eof(t) do begin readln(t,who_is); case who_is of 'L':begin p:=TLegkov.Create(t); FList.Add(p); end; 'G':begin p:=TGruzov.Create(t); FList.Add(p) end; end; //case end; //while CloseFile(t) end; Procedure TAvtopark.Print(); var i:integer; p:TAvto; begin writeln(name); writeln('==================='); for i:=0 to FList.Count-1 do begin p:=FList[i]; p.Print() end end; Destructor TAvtopark.Destroy; var p:TAvto; begin while FList.Count<>0 do begin p:=FList.First; p.Destroy; FList.Delete(0) end; FList.Destroy; inherited Destroy; end; Function CompareByDriver(Item1:Pointer; Item2:Pointer):integer; var drv1,drv2:TAvto; begin drv1:=TAvto(Item1); drv2:=TAvto(Item2); result:=drv1.Compare(drv2) end; Procedure TAvtopark.Sort(); begin FList.Sort(CompareByDriver) end; end. Код:
unit Un_Avto; interface Type TAvto=class private FDriver:string; public Model:string; Gos_number:string; Constructor Create(var t:TextFile); Procedure Print (); virtual; Function Compare (AAvto:TAvto):integer; Function GetName():string; property Name:string read GetName; end; TLegkov=class(TAvto) private Tip:string; Color:string; public Constructor Create (var t:TextFile); Procedure Print(); override; // Function Kind():integer; end; TGruzov=class(TAvto) private Tonnag:integer; public Vid:integer; Constructor Create (var t:TextFile); Procedure Print(); override; end; implementation // --TAvto-- Constructor TAvto.Create(var t:TextFile); begin inherited Create; readln(t,FDriver); readln(t,Model); readln(t,Gos_number); end; Procedure TAvto.Print(); begin writeln('Водитель: ', FDriver); writeln('Марка: ', Model); writeln('Государственный номер: ',Gos_number); end; Function TAvto.Compare (AAvto:TAvto):integer; begin if FDriver<AAvto.FDriver then result:=-1 else if FDriver>AAvto.FDriver then result:=1 else result:=0; end; Function TAvto.GetName():string; begin result:=FDriver; end; // --TLegkov-- Constructor TLegkov.Create (var t:TextFile); begin inherited Create(t); readln(t,Tip); readln(t,Color); if not eof(t) then readln(t) end; Procedure TLegkov.Print(); begin inherited Print(); writeln('Тип кузова: ',Tip); writeln('Цвет: ',Color); writeln; writeln('------------------------'); end; // --TGruzov-- Constructor TGruzov.Create (var t:TextFile); begin inherited Create(t); readln(t,Tonnag); readln(t,Vid); if not eof(t) then readln(t) end; Procedure TGruzov.Print(); begin inherited Print(); writeln ('Тоннаж: ',Tonnag); writeln ('Вид: ',Vid); writeln('---------------'); end; end. Главная Код:
program Project_main; {$APPTYPE CONSOLE} uses SysUtils, Windows, Un_Avtopark in 'Un_Avtopark.pas', Un_Avto in 'Un_Avto.pas'; Function ????(var L:TAvtopark; k,n:string):boolean; var p:TAvto; i:integer; begin result:=false; ( ) end; var L:TAvtopark; n,k:string; begin SetConsoleOutputCP(1251); SetConsoleCP(1251); writeln('*', GetHeapStatus.TotalFree, '*', #10); L:=TAvtopark.Create('Data.txt'); L.Sort(); L.Print(); writeln('Введите тип кузова: '); readln(n); writeln('Введите цвет: '); readln(k); If (функция)then writeln('Таких автомобилей нет') else begin writeln(#10, '*******************'); L.Print() end; L.Destroy; writeln('*', GetHeapStatus.TotalFree, '*', #10); readln; end. |