Напишите программу переместить максимальный элемент матрицы f(k,p) в правый верхний угол а минимальный элемент- в левый нижний

khinmy khinmy    1   08.06.2019 23:40    2

Ответы
Анют2006 Анют2006  07.07.2020 22:46
Const
  k = 7;
  p = 10;

var
  i, j, e, max, min: integer;
  F: array[1..k, 1..p] of integer;

begin
  Randomize;
  writeln('Исходная матрица');
  max := -32768;
  min := 32767;
  for i := 1 to k do
  begin
    for j := 1 to p do
    begin
      e := random(100) - 50;
      if e > max then max := e
      else if e < min then min := e;
      write(e:4);
      F[i, j] := e
    end;
    writeln
  end;
  F[1, p] := max;
  F[k, 1] := min;
  writeln('Результирующая матрица');
  for i := 1 to k do
  begin
    for j := 1 to p do
      write(F[i, j]:4);
    writeln
  end
end.

Тестовое решение:

Исходная матрица
  34  36  41   9  -4  39  29   1  15 -33
  13  -9 -29  28 -45  -1   8  38  37  12
 -33  45   3  35 -47 -14 -30  49 -29  -6
 -50 -49  42  15  46   4  24 -21 -10  23
 -14  30 -14 -46  33 -26  24   2  -3 -31
 -27  15  47  25 -43  39 -17 -44   6 -40
  19  30 -20 -29 -34  12  -2   5  32   0
Результирующая матрица
  34  36  41   9  -4  39  29   1  15  49
  13  -9 -29  28 -45  -1   8  38  37  12
 -33  45   3  35 -47 -14 -30  49 -29  -6
 -50 -49  42  15  46   4  24 -21 -10  23
 -14  30 -14 -46  33 -26  24   2  -3 -31
 -27  15  47  25 -43  39 -17 -44   6 -40
 -50  30 -20 -29 -34  12  -2   5  32   0
ПОКАЗАТЬ ОТВЕТЫ
Const
  k = 3;
  p = 3;

var
  f: array [1..k, 1..p] of byte;
  mini: array [1..2] of byte := (1, 1);
  maxi: array [1..2] of byte := (1, 1);

procedure Swap(var a, b: integer);
var
  p: integer;
begin
  p := a; 
  a := b; 
  b := p;
end;

begin
  for i: byte := 1 to k do
  begin
    for j: byte := 1 to p do
    begin
      f[i, j] := random(10, 100);
      write(f[i, j]:3);
      if (f[mini[1], mini[2]] > f[i, j]) then
      begin
        mini[1] := i;
        mini[2] := j;
      end;
      if (f[maxi[1], maxi[2]] < f[i, j]) then
      begin
        maxi[1] := i;
        maxi[2] := j;
      end;
    end;
    writeln();
  end;
  writeln();
  
  swap(f[1, p], f[maxi[1], maxi[2]]);
  swap(f[p, 1], f[mini[1], mini[2]]);
  
  for i: byte := 1 to k do
  begin
    for j: byte := 1 to p do
      write(f[i, j]:3);
    writeln();
  end;
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика