Матрица. Если максимальные элементы столбцов находятся на главной диагонали, необходимо найти среднее арифметическое - PascalABC.NET
Формулировка задачи:
Дана действительная матрица размерности (n×n).
Если максимальные элементы столбцов находятся на главной диагонали, то необходимо найти среднее арифметическое элементов, стоящих под главной диагональю и добавить его к минимальному элементу матрицы. В противном случае матрицу оставить без изменения.
Решение задачи: «Матрица. Если максимальные элементы столбцов находятся на главной диагонали, необходимо найти среднее арифметическое»
textual
Листинг программы
begin var (n, count) := (ReadlnInteger('N ='), 0); var a := MatrGen(n, n, (i, j) -> ReadlnReal(Format('a[{0},{1}] =', i, j))); a.Println; var maxs := a.Cols.Select(v -> v.Max).ToArray; for var j := 0 to a.GetLength(1) - 1 do if maxs[j] = a[j, j] then count += 1; if count = n then begin var average := a.ElementsWithIndexes.Where(v -> v[1] > v[2]).Average(v -> v[0]); var min := a.ElementsByCol.Min; a.Transform(v -> v = min ? v + average : v); writeln('Новая матрица:'); a.Println; end else writeln('Матрица остаётся без изменений'); end.
Объяснение кода листинга программы
- Сначала программа запрашивает у пользователя ввод размера матрицы (n) и количество строк для вывода (count).
- Затем создается матрица a размером n на n, элементы которой заполняются с помощью функции MatrGen.
- Функция MatrGen создает матрицу случайными элементами, которые вводятся с клавиатуры.
- Далее находятся максимальные элементы каждого столбца с помощью функции Cols.Select и сохраняются в массиве maxs.
- Затем проверяется, равны ли максимальные элементы столбцов элементам главной диагонали матрицы.
- Если это так, то увеличивается счетчик count.
- Если все максимальные элементы столбцов находятся на главной диагонали, то программа переходит к следующему этапу.
- Находится среднее арифметическое элементов главной диагонали с помощью функции Average.
- Также находится минимальный элемент матрицы с помощью функции Min.
- Затем выполняется преобразование элементов матрицы с помощью функции Transform, где если элемент меньше минимального, то к нему добавляется среднее арифметическое.
- Выводится сообщение о том, что матрица не изменилась.
- Если условие в пункте 5 не выполнено, то выводится сообщение о том, что матрица осталась без изменений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д