Опубликовано 03.01.2018 по предмету Информатика от Гость

Дано массивы A(N1,N1),B(N2,N2),C(N3,N3). найти в каждой строке исходного массива наименьший элемент и переставить его с элементом стоящим на главной диагонали. нахождение в каждой строке массива наименьшего элемента и его перестановку с элементом стоящим на главной диагонали оформить в виде подпрограммы

Ответ оставил Гость

Type
  M = array[,] of integer;

procedure Swap(var a: M; i: integer; j: integer);
//обменивает местами элементы массива a[i,i] и a[i,j]
var
  buff: integer;
begin
  if i <> j then begin
    buff := a[i, i]; a[i, i] := a[i, j]; a[i, j] := buff
  end
end;

function GetColMin(a: M; i: integer): integer;
// возвращает номер столбца, в котором найден минимальный элемент
// по строке с номером i, т.е. a[i,?]=min
var
  j, vmin, jm: integer;
begin
  vmin := 32766;
  for j := 0 to Length(a, 1) - 1 do
    if vmin > a[i, j] then begin
      vmin := a[i, j]; jm := j
    end;
  Result := jm
end;

procedure SwapMatrix(var a: M);
// меняет местами в массиве a[n,n] минимальный по строке элемент с
// элементом, лежащим на главной диагонали.
// Обращается к функции GetColMin и процедуре Swap
var
  i: integer;
begin
  for i := 0 to Length(a, 0) - 1 do Swap(a, i, GetColMin(a, i))
end;

procedure WriteMas(a: M; title: string);
// выводит заголовок, а потом массив построчно
var
  i, j, n: integer;
begin
  n := Length(a, 0) - 1;
  writeln(title);
  for i := 0 to n do
  begin
    for j := 0 to n do write(a[i, j]:5);
    writeln
  end
end;

procedure CreateMas(var a: M; n: integer; p: integer; q: integer);
// Создает массив a[0..n-1,0..n-1] и заполняет его
// данными используя датчик случайных чисел с мощностью "р"
// и минимальным значением q
var
  i, j: integer;
begin
  Randomize;
  SetLength(a, n, n);
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
      a[i, j] := random(p) + q
end;

const
  n1 = 3;
  n2 = 5;
  n3 = 8;

var
  a, b, c: M;

begin
  CreateMas(a, n1, 100, -50);
  WriteMas(a, Исходный массив а);
  SwapMatrix(a);
  WriteMas(a, Результирующий массив а);
  CreateMas(b, n2, 300, -150);
  WriteMas(b, Исходный массив b);
  SwapMatrix(b);
  WriteMas(b, Результирующий массив b);
  CreateMas(c, n3, 500, -250);
  WriteMas(c, Исходный массив c);
  SwapMatrix(c);
  WriteMas(c, Результирующий массив c);
end.

Тестовый прогон:

Исходный массив а
   14   23    7
  -50   31   36
  -39  -43  -38
Результирующий массив а
    7   23   14
   31  -50   36
  -39  -38  -43
Исходный массив b
  -91    6  -21 -139 -141
  130  -99   44  131  143
   93    5   97 -111   43
 -113   15  125   88   31
 -115  -39   27  124  144
Результирующий массив b
 -141    6  -21 -139  -91
  130  -99   44  131  143
   93    5 -111   97   43
   88   15  125 -113   31
  144  -39   27  124 -115
Исходный массив c
 -234  211  207 -131  151 -228  197 -163
  147    5  180 -135 -181  217 -178   -3
  178 -142 -149  -44 -195 -224 -187 -173
  -24   62   28 -134  -11 -216  -59   83
   62  -86   48  152  -44  -49 -218   92
   91  -60  201  206 -160 -135 -131   77
  161 -184 -204  113 -181  199  223  240
  147  129  143 -162   -6   80   98  113
Результирующий массив c
 -234  211  207 -131  151 -228  197 -163
  147 -181  180 -135    5  217 -178   -3
  178 -142 -224  -44 -195 -149 -187 -173
  -24   62   28 -216  -11 -134  -59   83
   62  -86   48  152 -218  -49  -44   92
   91  -60  201  206 -135 -160 -131   77
  161 -184  223  113 -181  199 -204  240
  147  129  143  113   -6   80   98 -162


Не нашел нужный ответ?

Если ответ по предмету Информатика отсутствует или он оказался неправильным, то попробуй воспользоваться поиском других ответов во всей базе сайта.


Найти другие ответы
Самые новые вопросы