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

Задача: 

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

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

Пусть переменная 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.