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

Program PascalGuru;

type
  arr = array [1 .. 100, 1 .. 100] of integer;

var
  A: arr;
  i, j, p, code, cislo: integer;
  n: integer; { кол-во СТРОК }
  m: integer; { кол-во СТОЛБЦОВ }
  x, s: string;
  f: text;

function max_stolb(j: integer): integer;
var
  i, max: integer;
begin
  max := A[1, j];
  for i := 2 to n do
    if A[i, j] > max then
      max := A[i, j];
  max_stolb := max;
end;

procedure write_isx;
var
  i, j, t: integer;
  f: text;
  probel: string[7];
  x: string;
begin
  assign(f, 'ISX.TXT');
  rewrite(f);
  writeln(f, 'Ishodnyi massiv:');
  writeln(f);
  for i := 1 to n do
  begin
    if i > 1 then
      writeln(f);
    for j := 1 to m do
    begin
      if (i = 1) then
      begin
        if j > 3 then
        begin
          write(f, A[i, j]);
          str(A[i, j], x);
          for t := 1 to 8 - length(x) do
            write(f, ' ');
        end
        else
          for t := 1 to 8 do
            write(f, ' ');

      end
      else
      begin
        write(f, A[i, j]);
        str(A[i, j], x);
        for t := 1 to 8 - length(x) do
          write(f, ' ');
      end;
    end;
  end;
  { --------------------------------------------------------------------- }
  for j := 1 to m do
    A[1, j] := max_stolb(j); { --- Записываем MAX в первую строку массива }
  writeln(f);
  writeln(f);
  writeln(f);
  writeln(f, 'Obrabotannyi massiv:');
  writeln(f);
  for i := 1 to n do
  begin
    if i > 1 then
      writeln(f);
    for j := 1 to m do
    begin
      if (i = 1) then
      begin
        if j > 3 then
        begin
          write(f, A[i, j]);
          str(A[i, j], x);
          for t := 1 to 8 - length(x) do
            write(f, ' ');
        end
        else
          for t := 1 to 8 do
            write(f, ' ');

      end
      else
      begin
        write(f, A[i, j]);
        str(A[i, j], x);
        for t := 1 to 8 - length(x) do
          write(f, ' ');
      end;
    end;
  end;

  close(f);
end;

procedure write_update;
var
  i, j: integer;
  f: text;
begin
  assign(f, 'UPDATE.TXT');
  rewrite(f);
  for j := 1 to m do
    A[1, j] := max_stolb(j); { --- Записываем MAX в первую строку массива }
  for i := 1 to n do
  begin
    if i > 1 then
      writeln(f);
    for j := 1 to m do
      write(f, A[i, j], '            ');
  end;
  close(f);
end;

{ ---------------------------------------------------------- }
begin
  assign(f, 'DATI.TXT');
  reset(f);

  { начало считывания массива с файла }
  i := 0;
  while (not eof(f)) do
  begin
    readln(f, s);
    inc(i);
    j := 0;
    repeat
      p := pos(' ', s);
      x := copy(s, 1, p - 1);
      if p = 0 then
        x := s;
      val(x, cislo, code);
      if code = 0 then
      begin
        inc(j);
        A[i, j] := cislo;
      end;
      delete(s, 1, p);
    until p = 0;

  end; { end while }
  n := i;
  m := j;
  { ---конец считывания массива с файла--- }

  write_isx(); { запись исходного массива }
  { write_update(); } { запись изменённого массива }

  writeln;
  writeln('Fail "ISX.TXT" uspeshno zapisan...');

  readln;
  close(f);

end.

Leave a Comment

+ 33 = 38