Ну и будет выдавать ошибки.
1. Это чистый паскаль, не delphi. В delphi кое-что поменялось, плюс надо директиву соотв. добавить для создания консольного приложения.
2. Ну, как мне кажется, имплементация слишком сложная. Сначала читаем все, а потом что-то делаем с этим. Тут я бы, как минимум, при чтении сразу бы делил данные на 2 массива - четные или нечетный. Потом отсортировать соотв. образом оба массива, потом записать их в файл.
В общем, как-то так:
Код:
program numbers;
{$APPTYPE CONSOLE}
type
TIntArray : Array Of Integer;
var
aODD, aEVEN : TIntArray;
procedure ReadNumbers(AFileName : String;);
var
N : Integer;
F : TextFile;
begin
SetLength(aODD,0);
SetLength(aEVEN,0);
AssignFile(F, AFileName);
Reset(F);
While Not Eof(F) Do
Begin
Read(F,N);
If (N mod 2) = 0
Then begin SetLength(aEVEN,Length(aEVEN)+1); aEVEN[High(aEVEN)] := N; end
Else begin SetLength(aODD,Length(aODD)+1); aODD[High(aODD)] := N; end;
End;
Close(F);
end;
procedure WriteNumbers(AFileName : String);
var
F : TextFile;
begin
AssighFile(F,AFileName);
Rewrite(F);
WriteArray(F,aEVEN);
WriteArray(F,aODD);
CloseFile(F);
end;
procedure WriteArray(F : TextFile; A : TIntArray);
var
I : Integer;
begin
For I := Low(A) To High(A) Do
WriteLn(F,A[i]);
end;
procedure SortNumbers(var A : TIntArray; IsAsc : Boolean);
var
I, J : Integer;
N : Integer;
F : Boolean;
begin
For I := Low(A) To High(A)-1 Do
For J := I+1 To High(A) Do
Begin
F := A[i] > A[J];
If Not IsAsc Then F := Not F;
If F Then
Begin
N := A[i];
A[i] := A[J];
A[J] := N;
End;
End;
end;
begin
ReadNumbers('C:\Users\User\Desktop\f1.txt');
SortNumbers(aEVEN,True);
SortNumbers(aODD,False);
WriteNumbers('C:\Users\User\Desktop\f2.txt');
end.
ЗЫ. Не проверял. Может потребуется что-нить поправить слегка.
ЗЗЫ. Для особо умных. Да. можно было сразу сделать сортировку вставкой, но это бы существенно усложнило бы понимание кода. И так совместил процедуры сортировки. Так же можно было бы сделать класс для храниения, клас-ридер для чтения и вообще накрутить кучу всего. Но для школьного задания это излишне.