uses crt;
const n=5;
m=8;
type mas=array[1..2*n,1..m] of integer;
procedure Vyvod(var mt:mas;x,y:integer);
var i,j:integer;
begin
for i:=1 to x do
begin
for j:=1 to y do
write(mt[i,j]:5);
writeln;
end;
writeln;
end;
var a,b:mas;
i,j,k,f,x,l,t:integer;
begin
clrscr;
randomize;
{создание исходной матрицы}
for i:=1 to n do
for j:=1 to m do
repeat
a[i,j]:=random(30)-10;
until not(a[i,j] in [0]);{делаем матрицу без нолей}
writeln('Исходная матрица:');
Vyvod(a,n,m);
{замена отрицательных нолями пункт 1}
b:=a;f:=0;
for i:=1 to n do
for j:=1 to m do
if b[i,j]<0 then
begin
f:=1;
b[i,j]:=0;
end;
if f=0 then writeln('Отрицательных элементов нет!')
else
begin
writeln('Замена отрицательных на 0:');
Vyvod(b,n,m);
end;
write('Press Enter...');
readln;
clrscr;
{вставка строк по пункту 2}
writeln('Исходная матрица:');
Vyvod(a,n,m);
k:=n;b:=a;
f:=0;
i:=k;{встаем в последнюю строку}
while i>=1 do {идем к началу}
begin
if b[i,1] mod 5=0 then{если первый элемент кратен 5}
begin
f:=1;
for l:=1 to m do{все элементы строк}
begin
for t:=k+1 downto i do{от последней до данной сдвигаем вверх}
b[t,l]:=b[t-1,l];
b[i,l]:=5;{на это место пишем строку из 5}
end;
k:=k+1;{увеличиваем количество строк}
i:=i-1;{смотрим следующую}
end
else i:=i-1;{если не кратный}
end;
if f=0 then writeln('Строк где первый элемент кратен 5 нет!')
else
begin
writeln('Вставка строк перед теми где первый элемент кратен 5:');
Vyvod(b,k,m);
end;
write('Press Enter...');
readln;
clrscr;
{удаление столбца по пункту 3}
writeln('Исходная матрица:');
Vyvod(a,n,m);
b:=a;x:=m;
k:=0;
for j:=m downto 1 do//здесь была ошибка вместо m было х
begin
t:=0;
for i:=1 to n do
if (a[i,j]>0)and odd(a[i,j]) then t:=1;
if t=1 then k:=j;
end;
if k=0 then writeln('Нечетных положительных элементов нет!')
else
begin
writeln('Удаление столбца № ',k,' с первым нечетным положительным элементом:');
if k=x then x:=x-1
else
begin
for i:=1 to n do
for j:=k to x-1 do
b[i,j]:=b[i,j+1];
x:=x-1;
end;
writeln('Результат удаления столбца:');
Vyvod(b,n,x);
end;
write('Press Enter...');
readln;
clrscr;
{обмен 2 и последнего столбцов}
writeln('Исходная матрица:');
Vyvod(a,n,m);
b:=a;
for i:=1 to n do
begin
x:=b[i,2];
b[i,2]:=b[i,m];
b[i,m]:=x;//здесь была ошибка вместо m, m-1
end;
writeln('Обмен второго и последнего столбцов:');
Vyvod(b,n,m);
write('Press Enter...');
readln
end.