Напечатать ту из матриц, у которой наименьший след - Turbo Pascal
Формулировка задачи:
Решение задачи: «Напечатать ту из матриц, у которой наименьший след»
const nm=20; W=4; type TMatrix = array[1..nm,1..nm] of Integer; var n: Integer; procedure mRand(var m: TMatrix; a, b: Integer); var i, j: Integer; begin for i:=1 to n do for j:=1 to n do m[i,j]:=a+Random(b); end; procedure mWrite(const m: TMatrix); var i, j: Integer; begin for i:=1 to n do begin for j:=1 to n do Write(' ',m[i,j]:W-1); WriteLn; end; end; function mTrail(const m: TMatrix): Longint; var i: Integer; r: Longint; begin r:=0; for i:=1 to n do r:=r+m[i,i]; mTrail:=r; end; var a, b: TMatrix; begin Randomize; repeat Write('N [1..',nm,']: '); ReadLn(n); until n in [1..nm]; mRand(a,0,100); WriteLn('A ='); mWrite(a); mRand(b,0,100); WriteLn('B ='); mWrite(b); WriteLn('Матрица с меньшим следом:'); if mTrail(a)<=mTrail(b) then mWrite(a) else mWrite(b); end.
Объяснение кода листинга программы
const nm = 20; W = 4; type TMatrix = array[1..nm,1..nm] of Integer; var n: Integer; m: TMatrix; a, b: Integer; i, j: Integer; procedure mRand(var m: TMatrix; a, b: Integer); var i, j: Integer; begin for i := 1 to n do for j := 1 to n do m[i, j] := a + Random(b); end; procedure mWrite(const m: TMatrix); var i, j: Integer; begin for i := 1 to n do begin for j := 1 to n do Write(' ', m[i, j]: W-1); WriteLn; end; end; function mTrail(const m: TMatrix): Longint; var i: Integer; r: Longint; begin r := 0; for i := 1 to n do r := r + m[i, i]; mTrail := r; end; var a, b: TMatrix; begin Randomize; repeat Write('N [1..', nm, '] : '); ReadLn(n); until n in [1..nm]; mRand(a, 0, 100); WriteLn('A ='); mWrite(a); mRand(b, 0, 100); WriteLn('B ='); mWrite(b); WriteLn('Матрица с меньшим следом:'); if mTrail(a) <= mTrail(b) then mWrite(a) else mWrite(b); end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д