Сформировать файл компоненты какого являются целыми ненулевыми числами и размещены в таком порядке: десять положительных, десять отрицательных и т.д.. Количество компонент файла кратное 20. Отсортировать файл так что бы компоненты были в таком порядке: 5 положительных, 5 отрицательных и т.д… — Pascal(Паскаль)

var
a:array[1..1000]of integer;
f:text;
n,i,chislo,t,s:integer;
begin
randomize;
assign(f,'input.txt');
rewrite (f);
repeat
writeln('vvedite kolichestvo chisel, kratnoe 20');
readln(n);
until n mod 20=0;
for i:=1 to n do
begin
chislo:=random(100)+1;
t:=(i-1)div 10;
if t mod 2<>0 then chislo:=-chislo;
write(f,chislo,' ');
end;
close(f);
reset(f);
writeln('ishodnyj massiv');
for i:=1 to n do
begin
read(f,a[i]);
write(a[i],' ');
end;
close(f);
writeln;
assign(f,'output.txt');
rewrite(f);
for i:=6 to n do
begin
t:=(i-1)div 5;
if (t-1)mod 4=0 then
begin
s:=a[i];
a[i]:=a[i+5];
a[i+5]:=s;
end;
end;
writeln('novyj massiv');
for i:=1 to n do
begin
write(a[i],' ');
write(f,a[i],' ');
end;
close(f);
readln;
end.

Следующий вариант

uses crt;
var f,g:file of integer;
    n,i,j,a,k,p:integer;
begin
clrscr;
randomize;
assign(f,'filef');
rewrite(f);
assign(g,'fileg');
rewrite(g);
write('Сколько пар десятков чисел записать в файл? n=');
readln(n);
for i:=1 to n do
 begin
  for j:=1 to 10 do
   begin
    a:=j;
    write(f,a);
   end;
  for j:=1 to 10 do
   begin
    a:=-j;
    write(f,a);
   end;
 end;
reset(f);
writeln('Файл F:');
while not eof(f) do
 begin
  read(f,a);
  write(a,' ');
 end;
close(f);
writeln;
writeln;
reset(f);
for i:=1 to n do
 begin
  p:=(i-1)*20;
  k:=p;
  for j:=k to k+4 do
   begin
    seek(f,j);
    read(f,a);
    write(g,a);
   end;
  k:=p+10;
  for j:=k to k+4 do
   begin
    seek(f,j);
    read(f,a);
    write(g,a);
   end;
  k:=p+5;
  for j:=k to k+4 do
   begin
    seek(f,j);
    read(f,a);
    write(g,a);
   end;
  k:=p+15;
  for j:=k to k+4 do
   begin
    seek(f,j);
    read(f,a);
    write(g,a);
   end;
 end;
close(f);
reset(g);
writeln('Файл G:');
while not eof(g) do
 begin
  read(g,a);
  write(a,' ');
 end;
close(g);
readln
end.

Leave a Comment

57 + = 63