27.11.2016, 13:12
|
Прохожий
|
|
Регистрация: 02.10.2016
Сообщения: 18
Версия Delphi: Delphi 7
Репутация: 10
|
|
Упорядочить по водителю
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.
|