Здесь приведены примеры программ и алгоритмов, используемых в курсе Основы программирования для студентов 1 курса ФИИТ мехмата ЮФУ
Редактировать

Основные действия с двумерными массивами (матрицами)

Описание, заполнение в цикле и вывод

Код 1

var a2: array [,] of integer;
a2 := new integer[3,4];
for var i:=0 to a2.GetLength(0)-1 do
for var j:=0 to a2.GetLength(1)-1 do
  a2[i,j] := i + j;
a2.Println;
Println(a2); 

Результат

0 1 2 3
1 2 3 4
2 3 4 5
[[0,1,2,3],[1,2,3,4],[2,3,4,5]]

Код 2

var a := new integer[3,4];
for var i:=0 to a.RowCount-1 do
for var j:=0 to a.ColCount-1 do
  a[i,j] := i + j;
a.Println(3); // 3 позиции под элемент

Результат

0  1  2  3
1  2  3  4
2  3  4  5

Заполнение по правилу и случайными

Код

var a := Matr(|1,2,3,4|,|5,6,7,8|,|9,10,11,12|);
a.Println(3);
var a1 := MatrGen(3,4,(i,j)->i+j+0.5);
a1.Println(5,1);

Результат

1 2 3 4
5 6 7 8
9 10 11 12

0.5 1.5 2.5 3.5
1.5 2.5 3.5 4.5
2.5 3.5 4.5 5.5

Код

var a := MatrRandomInteger(3,4);
a.Println(4);
var a1 := MatrRandomReal(3,4,1,9);
a1.Println(6,2);

Результат

22 32 10 41
11 25 50 50
81 19 25 73
7.58 1.99 4.99 2.09
7.39 2.82 3.04 7.39
5.86 8.64 1.33 5.63

Операции со строками и столбцами

Вывод k-той строки

var k := 1; // Номер строки

// Алгоритм
for var j:=0 to a.ColCount-1 do
  Print(a[k,j]);

// Метод
a.Row(k).Println;

Вывод k-того столбца

var k := 2; // Номер столбца

// Алгоритм
k := 2;
for var i:=0 to a.RowCount-1 do
  Print(a[i,k]);

// Метод
a.Col(k).Println;

Простейшие операции над строками и столбцами строками и столбцами

var a := MatrRandomInteger(3,4);
a.Println;
a.Row(0).Sum.Println;
a.Row(1).Average.Println;
a.Row(2).Product.Println;
a.Col(0).Min.Println;
a.Col(1).Max.Println;

Массовые операции со строками и столбцами

Сумма в каждой строке - алгоритм

var a := MatrRandomInteger(3,4);
a.Println;

var Sums := new integer[a.RowCount];
for var i:=0 to a.RowCount-1 do
begin
  var sum := 0;
  for var j:=0 to a.ColCount-1 do
    sum += a[i,j];
  Sums[i] := sum
end;
Sums.Println;

Сумма в каждой строке - использование методов

var Sums := ArrGen(a.RowCount,r -> a.Row(r).Sum);
Sums.Println;

Минимальный в каждом столбце

var Mins := ArrGen(a.ColCount,c -> a.Col(c).Min);
Mins.Println;

Количество четных в каждом столбце

var EvensCount := ArrGen(a.ColCount,c -> a.Col(c).Count(x->x.IsEven));
EvensCount.Println;

Минимальный из максимальных элементов строк

ArrGen(a.RowCount,r -> a.Row(r).Max).Min.Println;

Замена строк (столбцов)

Задача. Упорядочить вторую строку матрицы по возрастанию

Код

var a := MatrRandomInteger(3,4);
a.Println;
var b := a.Row(2);
Sort(b);
a.SetRow(2,b);
a.Println;

Поиск в матрице

Задача. Содержит ли матрица заданный элемент

Код

function Contains<T>(a: array [,] of T; x: T): boolean;
begin
  Result := False;
  for var i:=0 to a.RowCount-1 do
  for var j:=0 to a.ColCount-1 do
    if a[i,j]=x then
    begin
      Result := True;
      exit;
    end;
end;

begin
  var a := MatrRandomInteger(3,4,1,10);
  a.Println;
  var found := Contains(a,5);
  Println(found);
end.

Можно проще:

begin
  var a := MatrRandomInteger(3,4,1,10);
  a.Println;
  Println(5 in a);
end.