На диске записана два файла F1.A и F2.A,содержащие разное количество целых чисел.записать на диск новый файл,получающийся в результате слияния,т.е. Первым компонент нового файла является первый компонент файла F1.A,вторым- первый компонент F2.A,третьим- F1.A и т.д. Из «остатка» длинного файла дописать в конец нового максимальный и минимальный компоненты. Старше файлы уничтожить. Напечатать полученный файл в виде матрицы с числом столбцов=10 и указанием имени файла — Pascal(Паскаль)

uses crt;
var f1,f2,f3:file of integer;
    i,j,n,x,k,mn,mx:integer;
    s:string;
begin
clrscr;
assign(f1,'f1.a');
rewrite(f1);
assign(f2,'f2.a');
rewrite(f2);
write('Имя нового файла:  ');
readln(s);
assign(f3,s);
rewrite(f3);
writeln('Введите не менее 10 элементов в файл F1.A, окончание ввода 0:');
i:=0;
repeat
  i:=i+1;
  write('Элемент ',i,'=');
  readln(x);
  write(f1,x);
until(x=0)and(i>10);
writeln('Введите не менее 10 элементов(не равное файлу F1.A) в файл F2.A, окончание ввода 0:');
j:=0;
repeat
  j:=j+1;
  write('Элемент ',j,'=');
  readln(x);
  write(f2,x);
until(x=0)and(j>10)and(j<>i);
clrscr;
writeln('Содержание файла F1.A:');
reset(f1);
while not eof(f1)do
 begin
  read(f1,x);
  write(x,' ');
 end;
close(f1);
writeln;
writeln;
writeln('Содержание файла F2.A:');
reset(f2);
while not eof(f2)do
 begin
  read(f2,x);
  write(x,' ');
 end;
writeln;
writeln;
close(f2);
reset(f1);
reset(f2);
if filesize(f1)>filesize(f2) then
 begin
  n:=filesize(f2);
  k:=1;
 end
else
 begin
  n:=filesize(f1);
  k:=2;
 end;
for i:=0 to n-1 do
 begin
  seek(f1,i);
  read(f1,x);
  write(f3,x);
  seek(f2,i);
  read(f2,x);
  write(f3,x);
 end;
close(f1);
close(f2);
close(f3);
case k of
1:begin
  reset(f1);
  reset(f3);
  seek(f1,n);
  read(f1,mn);
  mx:=mn;
  while not eof(f1) do
   begin
    read(f1,x);
    if x<mn then mn:=x
    else if x>mx then mx:=x;
   end;
   close(f1);
   erase(f1);
   seek(f3,filesize(f3));
   write(f3,mx);
   write(f3,mn);
  end;
2:begin
  reset(f2);
  reset(f3);
  seek(f2,n);
  read(f2,mn);
  mx:=mn;
  while not eof(f2) do
   begin
    read(f2,x);
    if x<mn then mn:=x
    else if x>mx then mx:=x;
   end;
   close(f2);
   seek(f3,filesize(f3));
   write(f3,mx);
   write(f3,mn);
   end;
end;
writeln('Содержание файла ',s);
reset(f3);
while not eof(f3) do
 begin
  read(f3,x);
  write(x,' ');
 end;
close(f3);
readln;
{erase(f2);
erase(f1);}
end.

Leave a Comment

80 − 78 =