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.