Даны два двумерных массива, в том из них, где сумма элементов главной диагонали больше, раскрасить желтым цветом первый и последний отрицательный элемент главной диагонали. Ввод, вывод, получение и окрашивание элементов организовать в виде процедур, подсчет суммы элементов главной диагонали – в виде функции — Pascal(Паскаль)

uses crt;
const nmax=20;
type matr=array[1..nmax,1..nmax] of integer;
procedure Vvod(var mt:matr; var x:byte;c:char);
var i,j:byte;
begin
repeat
write('Размер матрицы ',c,' до ',nmax,' = ');
readln(x);
until x in [1..nmax];
for i:=1 to x do
for j:=1 to x do
mt[i,j]:=random(20)-15;
end;
 
function Summa(mt:matr;x:byte):integer;
var i,j:byte;
    s:integer;
begin
s:=0;
for i:=1 to x do
s:=s+mt[i,i];
Summa:=s;
end;
 
procedure Vyvod(var mt:matr;x:byte);
var i,j:byte;
begin
for i:=1 to x do
 begin
   for j:=1 to x do
   write(mt[i,j]:5);
   writeln;
 end;
writeln;
end;
 
procedure Okras(var mt:matr;x:byte;c:char);
var i,j,i1,ip:byte;
begin
i1:=x;
for i:=x downto 1 do
if mt[i,i]<0 then i1:=i;
ip:=1;
for i:=1 to x do
if mt[i,i]<0 then ip:=i;
writeln('Матрица с большей суммой главной диагонали ',c);
for i:=1 to x do
 begin
  for j:=1 to x do
   begin
    if ((i=i1)and(j=i1))or((i=ip)and(j=ip))then
     begin
      textcolor(14);
      write(mt[i,j]:5);
     end
    else
     begin
      textcolor(15);
      write(mt[i,j]:5);
     end;
   end;
  writeln;
 end;
end;
var d,t:matr;
    nd,nt:byte;
    sd,st:integer;
begin
clrscr;
Vvod(d,nd,'D');
writeln('Исходная матрица D:');
Vyvod(d,nd);
sd:=Summa(d,nd);
writeln('Сумма на главной диагонали=',sd);
Vvod(t,nt,'T');
writeln('Исходная матрица T:');
Vyvod(t,nt);
st:=Summa(t,4);
writeln('Сумма на главной диагонали=',st);
if sd>st then Okras(d,nd,'D')
else if sd<st then Okras(t,nt,'T')
else write('Суммы равны!');
readln
end.

Leave a Comment

92 − = 83