Определить номер строки и столбца имеющих минимальную сумму элементов: разделить код на процедуры и функции - 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.

Объяснение кода листинга программы

  1. В процедуре mInit переменные i и j инициализируются значениями от 1 до m и от 1 до n соответственно. Значения переменных l и w не используются в данном контексте.
  2. В процедуре mWrite переменные i и j инициализируются значениями от 1 до m. Если строка не пустая, то она выводится на экран. Для каждого элемента массива a выводится пробел или значение элемента в зависимости от значения переменной W. После вывода элемента выполняется переход на новую строку.
  3. В процедуре FindMin переменные mm и j инициализизируются значениями от 2 до c. Переменная m инициализируется значением, полученным от функции sf. Если значение mm меньше значения m, то происходит перезапись переменных m и i.
  4. В функции SumR переменные j и s инициализизируются значениями от 1 до n. Сумма элементов массива a вычисляется и сохраняется в переменной s.
  5. В функции SumC переменные i и s инициализизируются значениями от 1 до m. Сумма элементов массива a вычисляется и сохраняется в переменной s.
  6. В начале программы значения переменных m и n инициализизируются значениями от 2 до 100. Затем выполняется инициализация массива a и вывод строки Матрица A:.
  7. Затем выполняется вызов функции FindMin, которая ищет минимальную сумму элементов в столбце или строке. Выводится номер строки и столбца с минимальной суммой.
  8. Затем выполняется вызов функции FindMin, которая ищет минимальную сумму элементов в столбце или строке. Выводится номер строки и столбца с минимальной суммой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5
Похожие ответы