//Отсортировать элементы выше главной диагонали матрицы по возрастанию, а ниже главной диагонали по убыванию
//процедура обмена двух элементов
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.
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.
Для вывода переменных используется команды вывода на консоль write/writeln? rjnjhst dcnhtxf.ncz d rjlt
Фразу " взять число и прогнать его по коду. " не понял
Фразу " взять число и прогнать его по коду. " не понял
Похожие вопросы
- Подскажите как сделать данную программу?
- Как написать данную программу сам пытался ( C++ )
- помогите записать данную программу на с++)
- почему не работает данная программа? в некоторых случах выводит, что индекс массива вышел за его границы
- Pascal-Напишите программу: ввод полные ФИО, вывод полное Ф и инициалы И. О. Можно ли упростить то что получилось у меня?)
- 196. Составьте программу получения в порядке убывания всех делителей данного числа.
- Составить блок-схему вычислительного процесса и написать программу на любом алгоритмическом языке высокого уровня.
- Создание программ.
- Продаю программу с исходниками на Visual Basic 2008 за 50 руб.
- В какой программе это делали.