Определить номер строки и столбца имеющих минимальную сумму элементов: разделить код на процедуры и функции - Turbo Pascal
Формулировка задачи:
Решение задачи: «Определить номер строки и столбца имеющих минимальную сумму элементов: разделить код на процедуры и функции»
textual
Листинг программы
const nmax=100; type TMas=array [1..nmax,1..nmax] of Integer; TSumFunc=function (const a: TMas; b, c: Integer): Integer; procedure mInit(var a: TMas; m, n, l, w: Integer); var i, j: Integer; begin for i:=1 to m do for j:=1 to n do a[i,j]:=l+Random(w); end; procedure mWrite(const a: TMas; m, n: Integer; s: String; W: Integer); var i, j: Integer; begin if s<>'' then WriteLn(s); for i:=1 to m do begin for j:=1 to n do if W<0 then Write(' ',a[i,j]) else Write(' ',a[i,j]:W); WriteLn; end; end; procedure FindMin(const a: TMas; sf: TSumFunc; b, c: Integer; var m, i: Integer); var mm, j: Integer; begin i:=1; m:=sf(a,b,i); for j:=2 to c do begin mm:=sf(a,b,j); if mm<m then begin m:=mm; i:=j; end; end; end; {$F+} function SumR(const a: TMas; n, r: Integer): Integer; var j, s: Integer; begin s:=0; for j:=1 to n do s:=s+a[r,j]; SumR:=s; end; function SumC(const a: TMas; m, c: Integer): Integer; var i, s: Integer; begin s:=0; for i:=1 to m do s:=s+a[i,c]; SumC:=s; end; var a: TMas; m, n, s, i: Integer; begin Randomize; repeat Write('Введите m, n [2..',nmax,']: '); ReadLn(m,n); until (m in [2..100]) and (n in [2..100]); mInit(a,m,n,-15,31); mWrite(a,m,n,'Матрица A:',4); FindMin(a,SumC,m,n,s,i); WriteLn('Минимальная сумма в столбце ',i,' = ',s); FindMin(a,SumR,n,m,s,i); WriteLn('Минимальная сумма в строке ',i,' = ',s); end.
Объяснение кода листинга программы
- В процедуре mInit переменные i и j инициализируются значениями от 1 до m и от 1 до n соответственно. Значения переменных l и w не используются в данном контексте.
- В процедуре mWrite переменные i и j инициализируются значениями от 1 до m. Если строка не пустая, то она выводится на экран. Для каждого элемента массива a выводится пробел или значение элемента в зависимости от значения переменной W. После вывода элемента выполняется переход на новую строку.
- В процедуре FindMin переменные mm и j инициализизируются значениями от 2 до c. Переменная m инициализируется значением, полученным от функции sf. Если значение mm меньше значения m, то происходит перезапись переменных m и i.
- В функции SumR переменные j и s инициализизируются значениями от 1 до n. Сумма элементов массива a вычисляется и сохраняется в переменной s.
- В функции SumC переменные i и s инициализизируются значениями от 1 до m. Сумма элементов массива a вычисляется и сохраняется в переменной s.
- В начале программы значения переменных m и n инициализизируются значениями от 2 до 100. Затем выполняется инициализация массива a и вывод строки
Матрица A:
. - Затем выполняется вызов функции FindMin, которая ищет минимальную сумму элементов в столбце или строке. Выводится номер строки и столбца с минимальной суммой.
- Затем выполняется вызов функции FindMin, которая ищет минимальную сумму элементов в столбце или строке. Выводится номер строки и столбца с минимальной суммой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д