Преобразовать типизированный файл - Turbo Pascal

Формулировка задачи:

Здравствуйте. Дан типизированный файл, число компонент которого кратно четырем. Файл состоит из целых чисел не равных нулю, число положительных компонент файла равно числу отрицательных. Необходимо преобразовать файл так, чтобы два положительных числа чередовались с двумя отрицательными. Без использования массива :-( Прошу помощи Добавлено через 11 часов 6 минут Пытаюсь сделать с помощью доп.файла, но что-то делаю не так
PROGRAM
  lab_def;
USES
  crt;
CONST
  N = 4;
TYPE
  t_file = file of integer;
VAR
  fileName1, fileName2: string;
  f1, f2: t_file;
procedure new_tfile(const fName: string);
var
  a: integer;
  i: byte;
begin
  assign(f1, fName); rewrite(f1);
  for i := 1 to N do begin
    readln(a);
    write(f1, a);
  end;
  close(f1);
end;
procedure watch_file(const fName: string);
var
  a: integer;
begin
  assign(f1, fName); reset(f1);
  while not eof(f1) do begin
    read(f1, a);
    write(a:4, ' ');
  end; close(f1);
  writeln;
end;
procedure preob_tfile(const fName1, fName2: string);
var
  a, b: integer;
  i, j, kp, ko, pp, po,k1,k2: longint;
begin
  assign(f1, fName1); reset(f1);
  assign(f2, fName2); rewrite(f2);
   i := 0;  j:=0;
  pp := 0; po:=0;
  kp := 0; ko:=0;
  k1 := 0; k2:=0;
  while (not eof(f1))or(k1<>k2) do begin
    if k1<(n/2) then
      seek(f1,i)
    else
      if k2<(n/2) then begin
        seek(f1,po);
        inc(po);
      end
      else begin
        seek(f1,pp);
        inc(pp);
      end;
    read(f1, a);
    if (a>0) and (kp<2) then begin
      pp := i+1;
      write(f2, a);
      inc(kp); inc(k1); inc(i);
    end;
    if (a<0)and(kp=2)and(ko<2)then begin
      po := j+1;
      write(f2, a);
      inc(ko); inc(k2); inc(j);
    end;
    if (kp=2)and(ko=2) then begin
      kp := 0; ko := 0;
    end;
  end; close(f1); close(f2);
end;
BEGIN
    clrscr;
    write('Full file"s name 1: '); readln(fileName1);
    write('Full file"s name 2: '); readln(fileName2);
    new_tfile(fileName1);
    watch_file(fileName1);
    preob_tfile(fileName1,fileName2);
    watch_file(fileName2);
    readln;
END.
Добавлено через 23 часа 8 минут ****

Код к задаче: «Преобразовать типизированный файл - Turbo Pascal»

textual
procedure preob_tfile(const fName: string);
var
  a, b: integer;
  i, j: longword;
  z: boolean;
begin
  assign(f1, fName);
  reset(f1);
  for i := 0 to filesize(f1) - 2 do
    begin
      z := i mod 4 < 2;
      seek(f1, i);
      read(f1, a);
      if z <> (a >= 0) //вариант: if z xor (a >= 0)
        then for j := i + 1 to filesize(f1) - 1 do
          begin
            read(f1, b);
            if z = (b >= 0) //вариант: if not(z xor (a >= 0))
              then begin
                seek(f1, j);
                write(f1, a);
                seek(f1, i);
                write(f1, b);
                break
              end
          end
    end;
  close(f1)
end;

8   голосов, оценка 4.500 из 5


СОХРАНИТЬ ССЫЛКУ