// PascalABC.NET 3.3, сборка 1555 от 21.10.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк в массиве:'); var m:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); // Отсортировать массив по возрастанию в столбцах for var j:=0 to a.ColCount-1 do a.SetCol(j,a.Col(j).OrderBy(x->x).ToArray); Writeln('*** Массив, сортированный по колонкам ***'); a.Println(4); Writeln(4*a.ColCount*'-'); // элементы, записанные в обратном порядке в строках и в столбцах var b:=new integer[a.RowCount,a.ColCount]; for var i:=0 to a.RowCount-1 do b.SetRow(i,a.Row(i).Reverse.ToArray); for var j:=0 to a.ColCount-1 do b.SetCol(j,b.Col(j).Reverse.ToArray); Writeln('*** Созданный массив ***'); b.Println(4) end.
Пример Количество строк в массиве: 4 Количество столбцов в массиве: 7 *** Исходный массив [4,7] *** -35 72 -60 -96 -3 13 -67 86 55 -58 -58 -25 83 79 -13 54 94 -87 -39 7 67 -64 -87 41 22 38 25 33
===== PascalABC.NET =====
type
Node = auto class
public
data: integer;
left, right: Node;
end;
procedure Add(var root: Node; x: integer);
begin
if root = nil then
begin
root := new Node(x, nil, nil);
exit
end;
if root.data > x then
Add(root.left, x)
else if root.data < x then
Add(root.right, x)
end;
procedure Postfix(root: Node);
begin
if root = nil then exit;
Postfix(root.left);
Postfix(root.right);
Print(root.data)
end;
begin
var s := Seq(51, 25, 73, 15);
var R: Node;
R := nil;
foreach var x in s do
Add(R,x);
Add(R, 31);
Add(R, 93);
Postfix(R);
end.