Показать сообщение отдельно
  #2  
Старый 20.12.2016, 20:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну и будет выдавать ошибки.
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.

ЗЫ. Не проверял. Может потребуется что-нить поправить слегка.
ЗЗЫ. Для особо умных. Да. можно было сразу сделать сортировку вставкой, но это бы существенно усложнило бы понимание кода. И так совместил процедуры сортировки. Так же можно было бы сделать класс для храниения, клас-ридер для чтения и вообще накрутить кучу всего. Но для школьного задания это излишне.
Ответить с цитированием