Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы. - Pascal
Формулировка задачи:
Помогите пожалуйста написать код по заданию:
Дан двухмерный массив размером M x N. Преобразовать его по правилу - умножить на минимальный элемент этой матрицы. Из первых четырех строк массива сформировать четыре новых вектора. Преобразовать каждый из них по правилу - если у массива есть хотя бы один элемент, принадлежащий отрезку [a,b], то все отрицательные элементы заменить нулями, в противном случае - единицами.Решение задачи: «Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы.»
textual
Листинг программы
type TVector = Array[Byte] Of Integer; TArray = Array[Byte] Of TVector; procedure InitArray(var x: TArray; var n, m: Byte); var i, j: Byte; begin repeat Write('Input m (>4) = '); ReadLn(n); until (n > 3); repeat Write('Input n (>0) = '); ReadLn(m); until (m > 0); Randomize(); for i := 0 to n - 1 do begin WriteLn; for j := 0 to m - 1 do begin x[i, j] := Random(199) - 99; Write(x[i, j]:5); end; end; end; procedure ChangeArrayByRule(var x: TArray; const n, m: Byte); var i, j, iMin, jMin: Byte; min: Integer; begin iMIn := 0; jMin := 0; for i := 0 to n - 1 do for j := 0 to m - 1 do if (x[i, j] < x[iMin, jMin]) then begin iMin := i; jMin := j; end; min := x[iMIn, jMin]; for i := 0 to n - 1 do begin WriteLn; for j := 0 to m - 1 do begin x[i, j] := x[i, j] * min; Write(x[i,j]:7); end; end; end; function CheckIn(const x: TVector; const len: Byte; const a, b: Integer): Boolean; var j: Byte; Result: Boolean; begin j := 0; repeat Result := ((x[j] >= a) And (x[j] <= b)); Inc(j); until ((Result) Or (j >= len)); CheckIn := Result; end; procedure GenerateVector(var x: TVector; const m: Byte; const flag: Boolean); var j: Byte; begin WriteLn; for j := 0 to m - 1 do begin if (x[j] < 0) then x[j] := Ord(flag); Write(x[j]:7); end; end; procedure GenerateVectors(var a, b, c, d: TVector; const m: Byte); var x, y: Integer; begin Write('Input a='); ReadLn(x); repeat Write('Input b (>=', x, ') = '); ReadLn(y); until (y >= x); GenerateVector(a, m, CheckIn(a, m, x, y)); GenerateVector(b, m, CheckIn(b, m, x, y)); GenerateVector(c, m, CheckIn(c, m, x, y)); GenerateVector(d, m, CheckIn(d, m, x, y)); end; var orig: TArray; a, b, c, d: TVector; n, m: Byte; begin InitArray(orig, n, m); WriteLn; ChangeArrayByRule(orig, n, m); WriteLn; a := orig[0]; b := orig[1]; c := orig[2]; d := orig[3]; GenerateVectors(a, b, c, d, m); end.
Объяснение кода листинга программы
- В процедуре InitArray создается массив x размером n на m, где n и m - это введенные пользователем значения.
- Затем в цикле происходит итерация по элементам массива x.
- Для каждого элемента x[i, j] генерируется случайное число от 0 до 198.
- Если сгенерированное число меньше текущего значения x[i, j], то оно заменяется на новое значение, которое равно произведению текущего значения x[i, j] и минимального элемента массива x.
- После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
- Затем происходит итерация по элементам массива x.
- Для каждого элемента x[i, j] его значение умножается на значение min.
- После завершения цикла, в переменной min хранится минимальное значение из всех элементов массива x.
- В функции CheckIn проверяется, удовлетворяет ли текущий элемент массива условию (x[j] >= a) And (x[j] <= b).
- Если условие выполняется, то возвращается true, иначе возвращается false.
- В процедуре GenerateVector создается новый массив x размером m.
- Записывается сообщение Input a= и считывается значение a.
- Проверяется, удовлетворяет ли значение a условию (a >= x).
- Если условие выполняется, то вызывается процедура GenerateVector с аргументами a, m, CheckIn(a, m, x, y).
- Аналогично, вызывается процедура GenerateVector с аргументами b, m, CheckIn(b, m, x, y).
- Затем вызывается процедура GenerateVector с аргументами c, m, CheckIn(c, m, x, y).
- И, наконец, вызывается процедура GenerateVector с аргументами d, m, CheckIn(d, m, x, y).
- В конце программы выводится сообщение Input a= и выводятся значения a, b, c, d.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д