Ну и будет выдавать ошибки.
1. Это чистый паскаль, не delphi. В delphi кое-что поменялось, плюс надо директиву соотв. добавить для создания консольного приложения.
2. Ну, как мне кажется, имплементация слишком сложная. Сначала читаем все, а потом что-то делаем с этим. Тут я бы, как минимум, при чтении сразу бы делил данные на 2 массива - четные или нечетный. Потом отсортировать соотв. образом оба массива, потом записать их в файл.
В общем, как-то так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 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 .
|
ЗЫ. Не проверял. Может потребуется что-нить поправить слегка.
ЗЗЫ. Для особо умных. Да. можно было сразу сделать сортировку вставкой, но это бы существенно усложнило бы понимание кода. И так совместил процедуры сортировки. Так же можно было бы сделать класс для храниения, клас-ридер для чтения и вообще накрутить кучу всего. Но для школьного задания это излишне.