Отсортировать ту строку матрицы, номер которой введет пользователь - Pascal
Формулировка задачи:
Отсортировать в двумерном массиве целых случайных чисел ту строку, номер которой введет пользователь. Использовать метод сортировки вставкой.
Решение задачи: «Отсортировать ту строку матрицы, номер которой введет пользователь»
textual
Листинг программы
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
m,n,i,j,k:byte;
c:integer;
begin
randomize;
repeat
write('Количество строк от 2 до ',nmax,' m=');
readln(m);
until m in [2..nmax];
repeat
write('Количество столбцов от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(20);
write(a[i,j]:4);
end;
writeln;
end;
repeat
write('Введите номер строки от 1 до ',m,' k=');
readln(k);
until k in [1..m];
for i:=2 to n do
begin
c:=a[k,i];
j:=i-1;
while (j>=1) and (a[k,j]>c) do
begin
a[k,j+1]:=a[k,j];
j:=j-1;
end;
a[k,j+1]:=c;
end;
writeln('Результат:');
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
end.
Объяснение кода листинга программы
- Объявляется константа
nmaxсо значением 20. - Объявляются переменные:
a- массив целых чисел размерности от 1 доnmaxх от 1 доnmax.m,n,i,j,k- целочисленные переменные;c- целочисленная переменная.
- Генерируется случайное начальное значение для генератора случайных чисел.
- Начинается цикл повторения до тех пор, пока не будет введено корректное значение
m(от 2 доnmax).- Запрашивается пользовательский ввод значения
m.
- Запрашивается пользовательский ввод значения
- Начинается цикл повторения до тех пор, пока не будет введено корректное значение
n(от 2 доnmax).- Запрашивается пользовательский ввод значения
n.
- Запрашивается пользовательский ввод значения
- Выводится сообщение
Исходная матрица:. - Запускается вложенный цикл
forдля заполнения матрицы случайными значениями от 0 до 19 и их отображения.- Для
iот 1 доm, - Для
jот 1 доn, - Заполняется элемент массива случайным числом от 0 до 19, значение выводится на экран.
- Для
- Начинается цикл повторения, пока не будет введено корректное значение
k(от 1 доm).- Запрашивается пользовательский ввод значения
k.
- Запрашивается пользовательский ввод значения
- Начинается цикл
forдля сортировки строки с номеромkметодом вставок.- Для
iот 2 доn, - Запоминается значение элемента
a[k,i]в переменнуюc. - Затем, начиная с
jравногоi-1, идет по убывающей, пока значениеjбольше или равно 1, и значениеa[k,j]большеc.- Происходит сдвиг элементов вправо.
- После цикла вложенного в
whileпроисходит присваиваниеcэлементуa[k,j+1].
- Для
- Выводится сообщение
Результат:. - Начинается вложенный цикл
forдля вывода отсортированной матрицы.- Для
iот 1 доm, - Для
jот 1 доn, - Выводится значение элемента массива
a[i,j]с выравниванием в 4 символа.
- Для
- Конец.