
02.01.2010, 23:11
|
 |
Прохожий
|
|
Регистрация: 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.
|