В квадратной матрице вычесть последнюю строку из остальных строк

Задача: 

Дана квадратная матрица. Вычесть последнюю строку из каждой строки (реализовать с помощью подпрограмм).

Алгоритм решения задачи: 

Пусть переменная i обозначает номер строки, а j - последовательность элементов в одной строке. Тогда все элементы последней строки будут иметь индексы [n,j], где n - размерность квадратной матрицы. Осталось перебрать матрицу и вычесть из каждого элемента соответствующий ему элемент [n,j].

Вычитать последнюю строку из самой себя смысла нет, т.к. получатся нули.

Следует помнить, что если вычитать отрицательное число, то фактически вы его прибавляете (два знака минус дают плюс).

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

Программа на языке Паскаль: 

const n = 4;
type matrix = array[1..n,1..n] of integer;
var     
        arr: matrix;
        i,j: byte;
 
procedure make_matrix(var m: matrix);
begin
        randomize;
        for i:=1 to n do begin
                for j:=1 to n do begin
                        m[i,j] := random(100)-50;
                        write(m[i,j]:4);
                end;
                writeln;
        end;
end;
 
procedure minus_last(var m: matrix);
begin
        for i:=1 to n-1 do begin
                for j:=1 to n do 
                        write(m[i,j]-m[n,j]:4);
                writeln;
        end;
end;
 
begin
        make_matrix(arr);
        writeln;
        minus_last(arr);
end.

Результат выполнения программы:

  -7  46   9 -26
 -15 -44 -14 -35
   4  -7 -33 -33
 -49  13 -13  19
 
  42  33  22 -45
  34 -57  -1 -54
  53 -20 -20 -52

Примечания: 

Обратите внимание: -7 - (-49) = -7 + 49 = 42.