Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 515005

Дан файл, элементами которого являются n-мерные векторы. Векторы с наибольшим модулем перенести в конец файла - Pascal (Паскаль)

$
0
0
Вот имеется подобная программа (дали как пример...... в этой программе максимальные значения из каждого вектора копируются в конец этого вектора)

:

uses crt;
const n=5; mmax=20;
type mas=array[1..n] of integer;
fail=file of mas;
  function max(x:mas):integer;
  var i,mx:integer;
  begin
  mx:=abs(x[1]);
  for i:=2 to n do
  if abs(x[i])>mx then
  mx:=abs(x[i]);
  max:=mx
  end;
var f:fail;
x,y:mas;
m,i,j,k,mx:integer;
begin
clrscr;
randomize;
assign(f,'filef');
rewrite(f);
repeat
write('ведите количество компонет до',mmax,' m=');
readln(m);
until m in [1..mmax];
  for i:=1 to m do
  begin
  for j:=1 to n do
  x[j]:=random(101);
  write(f,x);
  end;
writeln('Содержание исходного файла:');
writeln('Макс. модуль':n*5+12);
reset(f);
mx:=-maxint-1;
  while not eof(f) do
  begin
  read(f,x);
      for i:=1 to n do
      begin
      write(x[i]:5);
            if max(x)>mx then     
      mx:=max(x);
      end;
  writeln(max(x):7);
  end;
writeln('Максимальный модуль=',mx);
seek(f,0);
k:=0;{количество компонент с макс. модулем}
i:=0;
  while i<filesize(f)-k do
  begin
  seek(f,i);
  read(f,x);
      if max(x)=mx then
      begin
      k:=k+1;
        for j:=i to filesize(f)-k-1 do
        begin
        seek(f,j+1);
        read(f,y);
        seek(f,j);
        write(f,y);
        end;
      seek(f,filesize(f)-k);
      write(f,x);
      end;
  i:=i+1;
  end;
writeln('Компонеты с макс. модулем в конец:');
writeln('Макс. модуль':n*5+12);
seek(f,0);
  while not eof(f) do
  begin
  read(f,x);
  for i:=1 to n do
  write(x[i]:5);
  writeln(max(x):7);
  end;
close(f);
readln
end.

.....только мне нужно чтобы:
1. программа брала данные вектора из текстового файла

Например

-100 123 25 -47 133 -654 2 6 5 9 ... n
1010 223 55 -41 103 -64 4 8 3 0 ... n
111 -1023 125 -487 133 54 2 5 5 0 ... n
-190 103 55 47 933 -6 88 6 5 -10 ... n
... ... ... ... ... ... ... ... ... ... ... n

2. Далее она находила вектора (строки) с наибольшим по модулю значением
3. И копировала этот вектор в конец файла ...пока не переберет все вектора (строки)

Например

111 -1023 125 -487 133 54 2 5 5 0 ... n
1010 223 55 -41 103 -64 4 8 3 0 ... n
-190 103 55 47 933 -6 88 6 5 -10 ... n
-100 123 25 -47 133 -654 2 6 5 9 ... n
... ... ... ... ... ... ... ... ... ... ... n

4. И сохраняла уже новый список из векторов в новый текстовый документ

(то есть в новом документе должен быть уже новый массив
"111 -1023 125 -487 133 54 2 5 5 0 ... n
1010 223 55 -41 103 -64 4 8 3 0 ... n
-190 103 55 47 933 -6 88 6 5 -10 ... n
-100 123 25 -47 133 -654 2 6 5 9 ... n
... ... ... ... ... ... ... ... ... ... ... n"

Viewing all articles
Browse latest Browse all 515005

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>