Напечатать элементы второй строки матрицы в порядке убывания - Pascal
Формулировка задачи:
Дано квадратную матрицу размерности n x n.Напечатать элементы второй строки в порядке убывания.
Решение задачи: «Напечатать элементы второй строки матрицы в порядке убывания»
textual
Листинг программы
{uses SysUtils} //Раскоментируй это, если у тебя не PascalABC.NET
type
int = integer;
uint = byte;
list = array of int;
matrix = array of list;
procedure quicksort(var mas:list; first, last:int); //Быстрая сортировка
var i, l, x, buf:int;
begin
if not(first < last) then
exit;
x:= mas[(first + last) div 2];
i:= first;
l:= last;
while (i <= l) do
begin
while (mas[i] > x) do //Для возрастания поставь <
inc(i);
while (mas[l] < x) do //Для возрастания поставь >
dec(l);
if (i <= l) then
begin
buf:= mas[i];
mas[i]:= mas[l];
mas[l]:= buf;
inc(i);
dec(l);
end;
end;
quicksort(mas, first, l);
quicksort(mas, i, last);
end;
var
arr:matrix;
i, j:uint;
begin
writeln('Введите n - линейный размер матрицы');
read(i);
SetLength(arr, i);
writeln('Введите матрицу размером n x n:');
for i:= low(arr) to high(arr) do //Здесь вместо low и high можно поставить 0 и n - 1
begin
SetLength(arr[i], Length(arr));
for j:= low(arr[i]) to high(arr[i]) do
read(arr[i, j]);
end;
quicksort(arr[low(arr) + 1], low(arr), high(arr)); //В дальнейшем low(arr) + 1 эквивалентно 1
writeln('Вторая строка по убыванию:');
for j:= low(arr[low(arr) + 1]) to high(arr[low(arr) + 1]) do
write(arr[low(arr) + 1, j], ' ');
end.
Объяснение кода листинга программы
- Объявление типов переменных:
- 'int' как псевдоним для 'integer'
- 'uint' как псевдоним для 'byte'
- 'list' как массив целых чисел
- 'matrix' как массив массивов целых чисел (матрица)
- Процедура quicksort:
- Процедура быстрой сортировки, использующая рекурсию
- Принимает в качестве параметров массив 'mas', начальный индекс 'first' и конечный индекс 'last'
- Объявление переменных:
- 'arr' как матрица
- 'i' и 'j' как целые числа без знака
- Основная часть программы:
- Запрашивается у пользователя размер матрицы 'n'
- Пользователь вводит элементы матрицы 'arr'
- Применяется быстрая сортировка к массиву, соответствующему второй строке матрицы, в порядке убывания
- Выводится отсортированная вторая строка матрицы.