Сортировка методом вставки - PascalABC.NET
Формулировка задачи:
Программа когда работает , а когда нет .Пишет ошибку в строке 19 , что индекс за границами массива , помогите исправить.
Решение задачи: «Сортировка методом вставки»
textual
Листинг программы
var
mas: array[1..7, 1..7] of integer;
a, b, c, d: integer;
begin
randomize;
for a := 1 to 7 do
for b := 1 to 7 do
begin
mas[a, b] := random(20);
end;
for a := 1 to 7 do
mas[a, 1] := integer.MinValue;
for a := 1 to 7 do
begin
for b := 1 to 7 do
begin
Write(mas[a, b]:2, ' ');
end;
Writeln();
end;
for a := 2 to 7 do
begin
b := a;
while mas[4, b] < mas[4, b - 1] do
begin
c := Mas[4, b];
Mas[4, b] := mas[4, b - 1];
mas[4, b - 1] := c;
b := b - 1;
end;
end;
writeln('Result:');
for a := 1 to 7 do
begin
for b := 1 to 7 do
begin
Write(mas[a, b]:2, ' ');
end;
Writeln();
end;
Writeln();
end.
Объяснение кода листинга программы
- Объявлены переменные:
mas- массив размером 7x7 для хранения чиселa,b,c,d- переменные для выполнения сортировки
- Инициализирован генератор случайных чисел
- Заполняется массив
masслучайными числами от 0 до 19 - Первая строка массива
masзаполняется минимальным значением типаinteger - Выводится на экран содержимое массива
masв виде строк по 2 символа с пробелами между ними - Начинается сортировка:
- Цикл перебирает строки массива
mas - Внутри цикла перебираются столбцы массива
mas - Если текущий элемент больше следующего, то они меняются местами
- Рекурсивный вызов для сортировки столбца от 4 до 1
- Цикл перебирает строки массива
- Выводится отсортированный массив
masна экран - Выводится итоговая строка