Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы. - Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста написать код по заданию:

Дан двухмерный массив размером M x N. Преобразовать его по правилу - умножить на минимальный элемент этой матрицы. Из первых четырех строк массива сформировать четыре новых вектора. Преобразовать каждый из них по правилу - если у массива есть хотя бы один элемент, принадлежащий отрезку [a,b], то все отрицательные элементы заменить нулями, в противном случае - единицами.

Решение задачи: «Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы.»

textual
Листинг программы
  1. type
  2.     TVector = Array[Byte] Of Integer;
  3.     TArray = Array[Byte] Of TVector;
  4.  
  5. procedure InitArray(var x: TArray; var n, m: Byte);
  6. var
  7.     i, j: Byte;
  8. begin
  9.     repeat
  10.         Write('Input m (>4) = '); ReadLn(n);
  11.     until (n > 3);
  12.     repeat
  13.         Write('Input n (>0) = '); ReadLn(m);
  14.     until (m > 0);
  15.     Randomize();
  16.     for i := 0 to n - 1 do
  17.     begin
  18.         WriteLn;
  19.         for j := 0 to m - 1 do
  20.         begin
  21.             x[i, j] := Random(199) - 99;
  22.             Write(x[i, j]:5);
  23.         end;
  24.     end;
  25. end;
  26.  
  27. procedure ChangeArrayByRule(var x: TArray; const n, m: Byte);
  28. var
  29.     i, j, iMin, jMin: Byte;
  30.     min: Integer;
  31. begin
  32.     iMIn := 0; jMin := 0;
  33.     for i := 0 to n - 1 do
  34.         for j := 0 to m - 1 do
  35.             if (x[i, j] < x[iMin, jMin])
  36.             then
  37.             begin
  38.                 iMin := i;
  39.                 jMin := j;
  40.             end;
  41.     min := x[iMIn, jMin];
  42.     for i := 0 to n - 1 do
  43.     begin
  44.         WriteLn;
  45.         for j := 0 to m - 1 do
  46.         begin
  47.             x[i, j] := x[i, j] * min;
  48.             Write(x[i,j]:7);
  49.         end;
  50.     end;
  51. end;
  52.  
  53. function CheckIn(const x: TVector; const len: Byte; const a, b: Integer): Boolean;
  54. var
  55.     j: Byte;
  56.     Result: Boolean;
  57. begin
  58.     j := 0;
  59.     repeat
  60.         Result := ((x[j] >= a) And (x[j] <= b));
  61.         Inc(j);
  62.     until ((Result) Or (j >= len));
  63.     CheckIn := Result;
  64. end;
  65.  
  66. procedure GenerateVector(var x: TVector; const m: Byte; const flag: Boolean);
  67. var
  68.     j: Byte;
  69. begin
  70.     WriteLn;
  71.     for j := 0 to m - 1 do
  72.     begin
  73.         if (x[j] < 0)
  74.         then
  75.             x[j] := Ord(flag);
  76.         Write(x[j]:7);
  77.     end;
  78. end;
  79.  
  80. procedure GenerateVectors(var a, b, c, d: TVector; const m: Byte);
  81. var
  82.     x, y: Integer;
  83. begin
  84.     Write('Input a='); ReadLn(x);
  85.     repeat
  86.         Write('Input b (>=', x, ') = ');
  87.         ReadLn(y);
  88.     until (y >= x);
  89.     GenerateVector(a, m, CheckIn(a, m, x, y));
  90.     GenerateVector(b, m, CheckIn(b, m, x, y));
  91.     GenerateVector(c, m, CheckIn(c, m, x, y));
  92.     GenerateVector(d, m, CheckIn(d, m, x, y));
  93. end;
  94.  
  95. var
  96.     orig: TArray;
  97.     a, b, c, d: TVector;
  98.     n, m: Byte;
  99. begin
  100.     InitArray(orig, n, m);
  101.     WriteLn;
  102.     ChangeArrayByRule(orig, n, m);
  103.     WriteLn;
  104.     a := orig[0]; b := orig[1];
  105.     c := orig[2]; d := orig[3];
  106.     GenerateVectors(a, b, c, d, m);
  107. end.

Объяснение кода листинга программы

  1. В процедуре InitArray создается массив x размером n на m, где n и m - это введенные пользователем значения.
  2. Затем в цикле происходит итерация по элементам массива x.
  3. Для каждого элемента x[i, j] генерируется случайное число от 0 до 198.
  4. Если сгенерированное число меньше текущего значения x[i, j], то оно заменяется на новое значение, которое равно произведению текущего значения x[i, j] и минимального элемента массива x.
  5. После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
  6. Затем происходит итерация по элементам массива x.
  7. Для каждого элемента x[i, j] его значение умножается на значение min.
  8. После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
  9. В функции CheckIn проверяется, удовлетворяет ли текущий элемент массива условию (x[j] >= a) And (x[j] <= b).
  10. Если условие выполняется, то возвращается true, иначе возвращается false.
  11. В процедуре GenerateVector создается новый массив x размером m.
  12. Записывается сообщение Input a= и считывается значение a.
  13. Проверяется, удовлетворяет ли значение a условию (a >= x).
  14. Если условие выполняется, то вызывается процедура GenerateVector с аргументами a, m, CheckIn(a, m, x, y).
  15. Аналогично, вызывается процедура GenerateVector с аргументами b, m, CheckIn(b, m, x, y).
  16. Затем вызывается процедура GenerateVector с аргументами c, m, CheckIn(c, m, x, y).
  17. И, наконец, вызывается процедура GenerateVector с аргументами d, m, CheckIn(d, m, x, y).
  18. В конце программы выводится сообщение Input a= и выводятся значения a, b, c, d.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы