Дана матрица А{ai,j}, где i, j=1,2,3,…,n . Составить схему алгоритма и программу определения координат переменой Х, которой присвоить значение наибольшего из положительных элементов матрицы, расположенных на главной диагонали и ниже ее — Pascal(Паскаль)

uses crt;
const nmax=20;
type  matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:matr;var x:byte);
var i,j:byte;
begin
repeat
write('Размер матрицы = ');readln(x);
until x in [1..nmax];
for i:=1 to x do
for j:=1 to x do
mt[i,j]:=random(10)+40;
end;
procedure Vyvod(var mt:matr;x:byte;mx:integer;imx,jmx:byte);
var i,j:byte;
begin
writeln('Исходная матрица:');
for i:=1 to x do
 begin
  for j:=1 to x do
   if (j<=i)then
    if (i=imx)and(j=jmx)then {максимальный красным}
     begin
      textcolor(12);
      write(mt[i,j]:4);
     end
    else
     begin
      textcolor(14); {нижний треугольник желтым}
      write(mt[i,j]:4);
     end
   else
    begin
     textcolor(15); {остальные белым}
     write(mt[i,j]:4);
    end;
  writeln;
 end;
textcolor(15);
writeln('Максимальный элемент в нижнем треугольнике матрицы=',mx);
writeln('его координаты [',imx,',',jmx,']');
end;
 
procedure Max(mt:matr;x:byte;var mx:integer; var imx,jmx:byte);
var i,j:byte;
begin
mx:=mt[1,1];imx:=1;jmx:=1;
for i:=1 to x do
for j:=1 to i do
if mt[i,j]>mx then
  begin
   mx:=mt[i,j];
   imx:=i;
   jmx:=j;
  end;
end;
 
var a:matr;
    n,imax,jmax:byte;
    x:integer;
begin
clrscr;
randomize;
Vvod(a,n);
Max(a,n,x,imax,jmax);
Vyvod(a,n,x,imax,jmax);
readln
end.

Вариант 2

uses
  crt;
const
  nmax=20;
type
  matr=array[1..nmax,1..nmax] of real;
var
  a:matr;
  x,imax,jmax:real;
  n:integer;
{ïðîöåäóðà ââîäà}
procedure Vvod(var mt:matr;var x:integer);
var
  i,j:byte;
begin
  repeat
    write('Ðàçìåð ìàòðèöû = ');
    readln(x);
  until
    x in [1..nmax];
  for i:=1 to x do
    for j:=1 to x do
    begin
      write('a[',i,',',j,']=');
      readln(a[i,j])
    end;
end;
{ïðîöåäóðà âûâîäà}
procedure Vyvod(var mt:matr;x:integer;mx:real;imx,jmx:real);
var
  i,j:byte;
begin
  writeln('Èñõîäíàÿ ìàòðèöà:');
  for i:=1 to x do
  begin
    for j:=1 to x do
      if (j<=i)then
        if (i=imx)and(j=jmx)then {ìàêñèìàëüíûé êðàñíûì}
        begin
          textcolor(12);
          write(mt[i,j]:4:2,'  ');
        end
        else
        begin
          textcolor(1); {íèæíèé òðåóãîëüíèê æåëòûì}
          write(mt[i,j]:4:2,'  ');
        end
        else
        begin
          textcolor(15); {îñòàëüíûå áåëûì}
          write(mt[i,j]:4:2,'  ');
        end;
    writeln;
  end;
  textcolor(15);
  writeln('Ìàêñèìàëüíûé ýëåìåíò â íèæíåì òðåóãîëüíèêå ìàòðèöû=',mx);
  writeln('åãî êîîðäèíàòû [',imx,',',jmx,']');
end;
{ïðîöåäóðà ïîèñêà ìàêñèìóìà}
procedure Max(mt:matr;x:integer;var mx:real; var imx,jmx:real);
var
  i,j:byte;
begin
  mx:=mt[1,1];
  imx:=1;
  jmx:=1;
  for i:=1 to x do
    for j:=1 to i do
      if mt[i,j]>mx then
      begin
        mx:=mt[i,j];
        imx:=i;
        jmx:=j;
      end;
end;
{îñíîâíàÿ ïðîãðàììà}
begin
  clrscr;
  randomize;
  Vvod(a,n);
  Max(a,n,x,imax,jmax);
  Vyvod(a,n,x,imax,jmax);
  readln
end.

Leave a Comment

49 − = 40