Другие языки программирования и технологии

Как прикрутить в данную программу вывод всех вычислительный действий программы?

//Отсортировать элементы выше главной диагонали матрицы по возрастанию, а ниже главной диагонали по убыванию

//процедура обмена двух элементов
procedure sortialgm(var a, b: integer);
var
tmp: integer;
begin
tmp := a;
a := b;
b := tmp;
end;

var
a: array[0..100 - 1, 0..100 - 1] of integer;
i, j, k: byte;
x, n: integer;

begin

readln (n);
randomize;
writeln('Исходная матрица:');
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
begin
a[i, j] := 0 + random(40);
write(a[i, j]:4);
end;
writeln;
end;
for i := 0 to n * n - 2 do
for j := i + 1 to n * n - 1 do
//выше главной по возрастанию
if ((i mod n > i div n) and (j mod n > j div n) and (a[i div n, i mod n] > a[j div n, j mod n]))
//ниже главной по убыванию
or ((i mod n < i div n) and (j mod n < j div n) and (a[i div n, i mod n] < a[j div n, j mod n]))
then
sortialgm(a[i div n, i mod n], a[j div n, j mod n]);

writeln('Отсортированная матрица:');
for i := 0 to n - 1 do
begin
for j := 0 to n - 1 do
write(a[i, j]:4);
writeln;
end;
end.

Данная программа сортирует квадратную матрицу. Выше главной диагонали по возрастанию, а ниже главной по убыванию.
Мне нужно сделать так, чтобы каждый момент сортировки выводился. Ну или на крайний случай можно "от руки" написать как работает данная программа, то есть взять число и прогнать его по коду. Я не совсем онимаю ка кон работает и пытаюсь разобраться. Буду признательна за любую помощь.
var a: array[0..100, 0..100] of integer;
i, j, k: byte;
x, n: integer;

procedure output_array;
var i1, j1: byte;
begin
for i1 := 0 to n-1 do
begin
for j1 := 0 to n-1 do
write(a[i1, j1]:4);
writeln;
end;
end;

//процедура обмена двух элементов - называйте ее OBMEN, Replace, это же не сортировка, Вы сами пишите "обмен двух элементов"
procedure sortialgm(var a1, b1: integer);
var tmp: integer;
begin
tmp := a1;
a1 := b1;
b1 := tmp;
writeln ('В массиве выше меняем следующие элементы массива A( ', i div n+1,' , ', i mod n+1,' ) и A( ', j div n+1,' , ', j mod n+1,' ).');
output_array; {вывод на экран промежуточных (обменных) данных. ЕЕ МОЖНО закомментировать}
end;

begin
readln (n); {числа конечно стоит брать 3,4,5, потому что n*n = 9, 16, 25, 36 перестановок))) и далее снова возвести в квадрат = 81, 256, 625 и т. д. }
randomize;
writeln('Исходная матрица:');
for i := 0 to n-1 do
begin
for j := 0 to n-1 do
begin
a[i, j] := 0 + random(40);
write(a[i, j]:4);
end;
writeln;
end;
for i := 0 to n * n -2 do
for j := i + 1 to n * n -1 do
//выше главной по возрастанию
if ((i mod n > i div n) and (j mod n > j div n) and (a[i div n, i mod n] > a[j div n, j mod n]))
//ниже главной по убыванию
or ((i mod n < i div n) and (j mod n < j div n) and (a[i div n, i mod n] < a[j div n, j mod n]))
then
sortialgm(a[i div n, i mod n], a[j div n, j mod n]);

writeln('Отсортированная матрица:');
output_array;
end.
Андрей Нестеров
Андрей Нестеров
20 124
Лучший ответ
Для вывода переменных используется команды вывода на консоль write/writeln? rjnjhst dcnhtxf.ncz d rjlt
Фразу " взять число и прогнать его по коду. " не понял
Serjio B
Serjio B
80 521