
14.12.2010, 00:07
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
какую-то фигню ты написал.
у меня получилось что-то вот такое (это если по простому):
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TStud = record
Name : String[20];
Year : Integer;
end;
var
A : Array Of TStud;
A1, A2 : Array Of TStud;
procedure ReadFile1(AFileName : String);
var
F : File Of TStud;
begin
SetLength(A1,0);
If FileExists(AFileName) Then
Begin
AssignFile(F,AFileName);
Reset(F);
While Not EOF(F) Do
Begin
SetLength(A1,Length(A1)+1);
Read(F,a1[High(A1)]);
End;
CloseFile(F);
End;
end;
procedure ReadFile2(AFileName : String);
var
F : File Of TStud;
begin
SetLength(A2,0);
If FileExists(AFileName) Then
Begin
AssignFile(F,AFileName);
Reset(F);
While Not EOF(F) Do
Begin
SetLength(A2,Length(A2)+1);
Read(F,A2[High(A1)]);
End;
CloseFile(F);
End;
end;
procedure TypeArray(AA : Array Of TStud);
var
I : Integer;
begin
For I := Low(AA) To High(AA) Do
WriteLn(AA[i].Year,' ',AA[i].Name);
end;
procedure Swap(AA : Array Of TStud; I, J : Integer);
var
T : TStud;
begin
T := AA[i];
AA[i] := AA[J];
AA[J] := T;
end;
procedure SortArray(AA : Array Of TStud);
var
I, J : Integer;
begin
For I := Low(AA) To High(AA)-1 Do
For J := I+1 To High(AA) Do
If AA[i].Year = AA[J].Year
Then
Begin
If AA[i].Name > AA[J].Name Then Swap(AA,I,J);
End
Else
If AA[i].Year > AA[J].Year Then Swap(AA,I,J);
end;
function IsExists(T : TStud; AA : Array Of TStud) : Boolean;
var
I : Integer;
begin
Result := False;
For I := Low(AA) To High(AA) Do
If (AA[i].Year = T.Year) And (AA[i].Name = T.Name) Then
Begin
Result := True;
Break;
End;
end;
procedure ComposeIntoResult(AA : Array Of TStud);
var
I : Integer;
begin
For I := Low(AA) To High(AA) Do
If Not IsExists(AA[i],A) Then
Begin
SetLength(A,Length(A)+1);
A[High(A)] := AA[i];
End;
end;
procedure WriteFile(AFileName : String; AA : Array Of TStud);
var
I : Integer;
F : File Of TStud;
begin
AssignFile(F,AFileName);
Rewrite(F);
For I := Low(AA) To High(AA) Do
Write(F,AA[i]);
CloseFile(F)
end;
begin
ReadFile1('In1.dat');
ReadFile2('In2.dat');
WriteLn('--- File 1 ---');
TypeArray(A1);
WriteLn;
WriteLn('--- File 2 ---');
TypeArray(A2);
WriteLn;
SetLength(A,0);
ComposeIntoResult(A1);
ComposeIntoResult(A2);
SortArray(A);
WriteLn('--- Result ---');
TypeArray(A);
WriteLn;
Write('Press Enter to close...');
ReadLn;
end.
|