Массив: Преобразовать матрицу по правилу: умножить на минимальный элемент этой матрицы. - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д