uses crt;
const n=5;
type
mass=array[1..n] of integer;{вектор}
matr=array[1..n] of mass;{матрица}
procedure Vvod(var mt:matr);{создание матриц}
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
mt[i,j]:=random(20);
end;
procedure VyvodMatr(var mt:matr);{вывод матриц на экран}
var i,j:byte;
begin
for i:=1 to n do
begin
for j:=1 to n do
write(mt[i,j]:4);
writeln;
end;
end;
function Summ(ms:mass):integer;{функция суммы вектора, строки матрицы}
var i:byte;
s:integer;
begin
s:=0;
for i:=1 to n do
s:=s+ms[i];
Summ:=s;
end;
procedure FormC(mt:matr;var ms:mass;var z:byte);{формирование вектора С}
var i:byte;
begin
z:=0;
for i:=1 to n do
if Summ(mt[i])mod 2=0 then{если сумма в строке четная}
begin
z:=z+1;{считаем строку}
ms[z]:=Summ(mt[i]);{записываем сумму в вектор}
end;
end;
procedure FormD(mt:matr;var ms:mass);{формирование вектора D}
var i,j:byte;
s:integer;
begin
for j:=1 to n do
begin
s:=0;
for i:=1 to n do{считаем сумму в столбце}
s:=s+mt[i,j];
ms[j]:=s;{записываем в вектор}
end;
end;
function MaxVek(ms:mass;x:byte):integer; {максимальный элемент вектора}
var i:byte;
mx:integer;
begin
mx:=ms[1];
for i:=1 to x do
if ms[i]>mx then mx:=ms[i];
MaxVek:=mx;
end;
procedure MaxMatr(mt:matr; var imx:byte);{определение строки с макимальным элементом}
var i,j:byte;
mx:integer;
begin
mx:=mt[1,1];imx:=1;
for i:=1 to n do
for j:=1 to n do
if mt[i,j]> mx then
begin
mx:=mt[i,j];
imx:=i;{номер строки}
end;
end;
procedure VyvodVekt(var ms:mass;x:byte);{вывод вектора на экран}
var i:byte;
begin
for i:=1 to x do
write(ms[i]:4);
write('Максимум=':12,MaxVek(ms,x));{после элементов вектора выводим макс.}
writeln;
writeln;
end;
var a,b:matr;
c,d:mass;
nc,i,imx:byte;
begin
clrscr;
randomize;
Vvod(a);
writeln('Исходная матрица А:');
VyvodMatr(a);
FormC(a,c,nc);
writeln('Четные суммы в строках - вектор С:');
VyvodVekt(c,nc);
Vvod(b);
writeln('Исходная матрица B:');
VyvodMatr(b);
FormD(b,d);
writeln('Суммы в столбцах - вектор D:');
VyvodVekt(d,n);
readln;
if abs(MaxVek(c,nc)-MaxVek(d,n))>10 then{если разность макс. больше 10}
begin
for i:=1 to n do a[i,i]:=abs(MaxVek(c,nc)-MaxVek(d,n));{на главную диагональ А пишем это значение}
writeln('Измененная матрица А:');
VyvodMatr(a);
end
else {иначе}
begin
MaxMatr(a,imx);
for i:=1 to n do b[3,i]:=a[imx,i];{третью строку в В меняем на строку с макс в А}
writeln('Измененная матрица B:');
VyvodMatr(b);
end;
readln
end.