Матрицы. Тексты программ

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску

Общая часть

Во всех задачах будем считать, что матрица описана следующим образом:

const 
  SzM = 10; 
  SzN = 10; 

type Matrix = array [1..SzM,1..SzN] of integer;

Кроме того, во всех задачах будем использовать следующие процедуры для заполнения и вывода:

procedure FillMatrixByRandom(var a: Matrix; m,n: integer); // Заполнение случайными
begin
  for var i:=1 to M do 
  for var j:=1 to N do 
    a[i,j] := Random(100);
end;

procedure PrintMatrix(const a: Matrix; m,n: integer); // Вывод матрицы
begin
  for var i:=1 to M do 
  begin
    for var j:=1 to N do 
      write(a[i,j]:4);
    writeln;  
  end;
end;

Данные участки кода следует писать в начале каждой программы, приводимой в этом пункте.

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

var a: Matrix;

begin
  var m := 4;
  var n := 5;
  FillMatrixByRandom(a,m,n);
    
  writeln('Элементы матрицы: ');
  PrintMatrix(a,m,n);
end.

Перемена местами двух строк

var a: Matrix;

begin
  var m := 5;
  var n := 9;
  FillMatrixByRandom(a,m,n);
    
  writeln('Исходная матрица: ');
  PrintMatrix(a,m,n);
  
  var k1 := 2; // поменять местами строки с номерами k1 и k2
  var k2 := 4;
  for var j:=1 to n do
    Swap(a[k1,j],a[k2,j]);
  
  writeln('Преобразованная матрица: ');
  PrintMatrix(a,m,n);
end.

Поиск минимумов в строках

var 
  a: Matrix;
  mins: array [1..SzN] of integer;

begin
  var m := 5;
  var n := 9;
  FillMatrixByRandom(a,m,n);
    
  writeln('Исходная матрица: ');
  PrintMatrix(a,m,n);
  
  for var i:=1 to m do
  begin
    var min := a[i,1];
    for var j:=2 to n do
      if a[i,j]<min then
        min := a[i,j];
    mins[i] := min;    
  end;
  
  writeln('Минимумы в строках: ');
  for var i:=1 to m do
    write(mins[i]:4);
end.

Поиск максимумов в столбцах

var 
  a: Matrix;
  maxs: array [1..SzN] of integer;

begin
  var m := 5;
  var n := 9;
  FillMatrixByRandom(a,m,n);
    
  writeln('Исходная матрица: ');
  PrintMatrix(a,m,n);
  
  for var j:=1 to n do
  begin
    var max := a[1,j];
    for var i:=2 to m do
      if a[i,j]>max then
        max := a[i,j];
    maxs[j] := max;    
  end;
  
  writeln('Максимумы в столбцах: ');
  for var j:=1 to n do
    write(maxs[j]:4);
end.

Поиск сумм в строках

Поиск произведений в столбцах

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

Сумма чисел на главной диагонали

Сумма чисел на побочной диагонали

Заполнение нулями ниже/выше главной диагонали

Заполнение нулями ниже/выше побочной диагонали

Ссылки

Программы для начинающих