// PascalABC.NET 3.2, сборка 1425 от 22.04.2017
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в матрице:');
var m:=ReadInteger('Количество столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-9,9);
a.Println(3); Writeln(3*a.ColCount*'-');
// 1. удалить строки с нулевыми элементами
var v:=a.Rows.Select(x->x.All(y->y<>0)).ToArray;
var q:=new integer[v.Where(r->r=true).Count,a.ColCount];
var k:=0;
for var i:=0 to v.Count-1 do
if v[i] then begin
q.SetRow(k,a.Row(i)); k+=1
end;
Writeln('Матрица, не содержащая строк с нулями');
a:=Copy(q);
a.Println(3);
// 2. отсортировать элементы первого столбца по возрастанию
a.SetCol(0,a.Col(0).OrderBy(x->x).ToArray);
Writeln('Матрица с отсортированной колонкой 1');
a.Println(3);
// 3. игры с k и b
var b:integer;
Write('Введите значения b и 1<=k<=',a.RowCount,': '); Read(b,k);<br> for var j:=k to a.RowCount-1 do a[j,m-1]+=b;
Writeln('Матрица с модифицированной последней колонкой');
a.Println(3)
end.
Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 8
*** Исходная матрица [5,8] ***
-4 -8 4 -4 8 -6 5 -2
2 -7 -4 6 8 4 9 -8
0 -8 -4 -7 -4 -7 6 -3
6 -4 -8 9 -7 -5 -3 -2
-9 7 -1 -2 -9 9 7 4
------------------------
Матрица, не содержащая строк с нулями
-4 -8 4 -4 8 -6 5 -2
2 -7 -4 6 8 4 9 -8
6 -4 -8 9 -7 -5 -3 -2
-9 7 -1 -2 -9 9 7 4
Матрица с отсортированной колонкой 1
-9 -8 4 -4 8 -6 5 -2
-4 -7 -4 6 8 4 9 -8
2 -4 -8 9 -7 -5 -3 -2
6 7 -1 -2 -9 9 7 4
Введите значения b и 1<=k<=4: 5 2<br>Матрица с модифицированной последней колонкой
-9 -8 4 -4 8 -6 5 -2
-4 -7 -4 6 8 4 9 -8
2 -4 -8 9 -7 -5 -3 3
6 7 -1 -2 -9 9 7 9
Замечание: Под удалением без всяких условностей понимается именно удаление. Матрица после удаления просто содержит меньшее количество строк.