Дана матрица размера N × M. Надо найти номер ее столбца с
наименьшим произведением элементов и вывести данный номер, а также
значение наименьшего произведения. Решение в Pascal
pascal
procedure FindColumnWithMinProduct(matrix: array of array of Integer; N, M: Integer);
var
columnProducts: array of Integer;
minProduct, minIndex, i, j: Integer;
begin
// Инициализация массива произведений
SetLength(columnProducts, M);
// Вычисление произведений столбцов
for j := 0 to M - 1 do
begin
columnProducts[j] := 1;
for i := 0 to N - 1 do
begin
columnProducts[j] := columnProducts[j] * matrix[i][j];
end;
end;
// Нахождение минимального произведения и его позиции
minProduct := columnProducts[0];
minIndex := 0;
for j := 1 to M - 1 do
begin
if columnProducts[j] < minProduct then
begin
minProduct := columnProducts[j];
minIndex := j;
end;
end;
// Вывод результата
WriteLn('Номер столбца с наименьшим произведением: ', minIndex + 1);
WriteLn('Значение наименьшего произведения: ', minProduct);
end;
var
matrix: array of array of Integer;
N, M, i, j: Integer;
begin
// Ввод размеров матрицы
Write('Введите количество строк: ');
ReadLn(N);
Write('Введите количество столбцов: ');
ReadLn(M);
// Инициализация матрицы и ввод элементов
SetLength(matrix, N, M);
for i := 0 to N - 1 do
begin
for j := 0 to M - 1 do
begin
Write('Введите элемент матрицы [', i + 1, '][', j + 1, ']: ');
ReadLn(matrix[i][j]);
end;
end;
// Поиск столбца с наименьшим произведением
FindColumnWithMinProduct(matrix, N, M);
end.
В основной программе сначала вводятся размеры матрицы - количество строк `N` и количество столбцов `M`. Затем инициализируется матрица `matrix` с помощью встроенной функции `SetLength`. Происходит цикл для ввода элементов матрицы с помощью операторов вложенных циклов `for`. В каждой итерации цикла сначала выводится приглашение для ввода элемента с указанием его позиции, а затем значение вводится с помощью функции `ReadLn` и сохраняется в соответствующем элементе матрицы `matrix[i][j]`.
После этого вызывается процедура `FindColumnWithMinProduct`, которой передается матрица `matrix` и ее размеры `N` и `M`. Внутри процедуры инициализируется массив `columnProducts` с помощью встроенной функции `SetLength`. Затем с помощью операторов вложенных циклов `for` вычисляются произведения столбцов и сохраняются в массиве `columnProducts[j]`. Во внутреннем цикле `i` происходит перемножение элементов каждого столбца `j` матрицы `matrix`.
Далее в цикле с помощью оператора `for` находится минимальное значение и его позиция в массиве `columnProducts`. Переменные `minProduct` и `minIndex` используются для хранения текущего минимального значения и его позиции, соответственно. В каждой итерации цикла сравниваются значения элементов массива `columnProducts` с помощью оператора сравнения `<`, и если текущее значение меньше, чем текущее минимальное, то значение и позиция обновляются.
После завершения цикла выводятся результаты с помощью функции `WriteLn` в формате, указанном в условии задачи.
Программа выводит номер столбца с наименьшим произведением и значение этого произведения.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет