uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
m,n,i,j:byte;
m1,m2:set of byte;
s:integer;
begin
clrscr;
randomize;
m1:=[];{создаем первое множество из 5 элементов - строки}
for i:=1 to 5 do
begin
repeat
j:=random(10);
until not(j in m1);{проверяем чтобы не повторялись}
m1:=m1+[j];{добавляем}
end;
writeln('Множество 1:');
for i:=0 to 9 do
if i in m1 then write(i,' ');
writeln;
m2:=[];{второе множество-столбцы}
for i:=1 to 5 do
begin
repeat
j:=random(10);
until not(j in m2);
m2:=m2+[j];
end;
writeln('Множество 2:');
for i:=0 to 9 do
if i in m2 then write(i,' ');
writeln;
writeln;
repeat
write('Количество строк до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' m=');
readln(m);
until m in [1..nmax];
writeln('Исходная матрица:');
s:=0;
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(20)-5;
if(i in m1)and(j in m2)then{если элемент на пересечени строки и столбца из множеств}
begin
textcolor(12);{выделим красным цветом}
write(a[i,j]:4);
s:=s+a[i,j];{суммируем}
end
else
begin
textcolor(15);
write(a[i,j]:4);
end;
end;
writeln;
end;
writeln;
textcolor(15);
writeln('Сумма=',s);
readln
end.