Показать сообщение отдельно
  #3  
Старый 02.01.2010, 23:11
Аватар для m0nzt3r
m0nzt3r m0nzt3r вне форума
Прохожий
 
Регистрация: 02.12.2008
Адрес: Россия, Москва
Сообщения: 7
Репутация: 11
По умолчанию

У тебя довольно странный алгоритм, честно говоря. В общем, вот что у меня получилось. Как я понял по твоему коду, в одной программе он должен и создавать исходный файл, и на его основе составлять второй файл с результатом. От себя добавил вывод на экран обоих файлов. Если что-то не понятно - спрашивай

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,Math;

type TFile = file of integer;
var F1,F2:TFile;

procedure MakeFile(name:string);
var k,i:integer; F1:TFile;
begin
  randomize;
  AssignFile(F1,name);
  ReWrite(F1);
  for i:=1 to (random(33)+1)*3 do begin
    k:=random(10);                               //Если хочешь, можешь тут хоть 100 поставить. Это максимальное значение элементов файла
    write(F1,k);
  end;
  CloseFile(F1);
end;

procedure ShowFile(name:string);
var k:integer; F1:TFile;
begin
  AssignFile(F1,name);
  {$I-} ReSet(F1); {$I+}
  if IOResult<>0 then begin
    writeln('Error opening the file!');
    Exit;
  end;
  write('File: ');
  while not EOF(F1) do begin
    read(F1,k);
    write(k,' ');
  end;
  CloseFile(F1);
  writeln;
end;

procedure ProcessFile(name1,name2:string);
var k1,k2,k3,n:integer;
begin
  AssignFile(F1,name1);
  AssignFile(F2,name2);
  {$I-} ReSet(F1); {$I+}
  if IOResult<>0 then begin
    writeln('Error opening the file!');
    Exit;
  end;
  ReWrite(F2);
  while not EOF(F1) do begin
    read(F1,k1);
    read(F1,k2);
    read(F1,k3);
    if Max(k1,k2)>k3 then begin
      write(F2,k3);
      n:=Min(k1,k2);
      write(F2,n)
    end else
    begin
      write(F2,k2);
      write(F2,k1);
    end;
  end;
  CloseFile(F1);
  CloseFile(F2);
end;

begin
  MakeFile('file.dat');
  ProcessFile('file.dat','file2.dat');
  ShowFile('file.dat');
  ShowFile('file2.dat');
  readln;
end.
Ответить с цитированием