Задача на нахождение суммы элементов столбцов в матрице по условию - PascalABC.NET
Формулировка задачи:
Условие: Если столбец к прямоугольной матрицы имеет минимальную сумму элементов, определить сумму элементов столбцов до к-ого столбца, иначе сумму элементов столбцов после к-ого.
Уважаемые программисты, не могли бы Вы помочь написать часть программы. Часть задания я сделал, но дальше не могу додумать. Заранее спасибо!
По своей программе могу сказать, что она выводит матрицу, заданную константным числом, находит сумму всех столбцов. (Также есть процедура, которая недодумана мной. Процедуура VVODK. Вводится с клавиатуры порядковый номер столбца, а при введении числа большего, чем число столбцов выводит "Некорректный номер столбца!".
Также составлена процедура определяющая минимальную сумму столбцов:
Теперь не знаю как сделать, чтобы при вводе номера столбца К с клавиатуры, программа сравнивала значение с суммой столбца и работала по условию задачи.
Еще раз условие: Если столбец к прямоугольной матрицы имеет минимальную сумму элементов, определить сумму элементов столбцов до к-ого столбца, иначе сумму элементов столбцов после к-ого.
Помогите
Решение задачи: «Задача на нахождение суммы элементов столбцов в матрице по условию»
textual
Листинг программы
const n = 6; type matr = array [1..n, 1..n] of integer; procedure VIVODMATR(var x: matr); var i, j: integer; begin Randomize; for i := 1 to n do begin for j := 1 to n do begin x[i, j] := random(10); write(x[i, j]:4); end; writeln; end; end; procedure VVODK(var Result: integer); begin write(' Введите номер столбца: '); readln(Result); while (Result < 1) or (Result > n) do begin writeln(' Некорректный номер столбца!'); write(' Введите номер столбца: '); readln(Result); end; end; procedure SumColumn(A: matr; Col: Integer; var result: integer); begin Result := 0; for var Row := 1 to n do Result += A[Row, Col]; end; procedure MinSum(A: matr; var result: integer); var s: integer; begin SumColumn(A, 1, Result); for var Col := 2 to n do begin SumColumn(A, Col, s); Result := min(Result, s); end; end; var A: matr; s, mins, K: integer; iFrom, iTo: integer; st: string; begin writeln(' Исходная матрица'); VIVODMATR(A); writeln(' <br>CУММА<br>'); for var Col := 1 to n do begin SumColumn(A, Col, s); Write(s:4); end; writeln; MinSum(A, s); writeLn(' Минимальная сумма столбцов матрицы: ', s); VVODK(K); SumColumn(A, K, s); MinSum(A, mins); if s = mins then begin iFrom := 1; iTo := K - 1; st := 'до'; end else begin iFrom := K + 1; iTo := n; st := 'после'; end; var Sum := 0; for var Col := iFrom to iTo do begin SumColumn(A, Col, s); Sum += s; end; WriteLnFormat('Сумма столбцов {0} столбца {1} равна {2}', st, K, Sum); end.
Объяснение кода листинга программы
- Объявлены константы: n = 6 (размер матрицы), st = 'до' (строка для вывода).
- Объявлен тип данных: matr = array [1..n, 1..n] of integer (массив для хранения матрицы целых чисел).
- Выведена исходная матрица с помощью процедуры VIVODMATR.
- В цикле выведены суммы всех столбцов матрицы с помощью процедуры SumColumn и MinSum найдена минимальная сумма столбцов.
- Запрошен номер столбца для вычисления суммы с помощью процедуры VVODK.
- Если сумма текущего столбца равна минимальной, то начинается новый цикл с изменением префикса для строк.
- Если сумма текущего столбца не равна минимальной, то цикл продолжается без изменений.
- В цикле вычисляются суммы выбранных столбцов и выводится итоговая информация.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д