
Вопрос задан 26.03.2021 в 09:33.
Предмет Информатика.
Спрашивает Maratov Adilet.
10 баллов. Нужно было написать код программы, которая продемонстрирует работу сортировки вставками.
(Т.е. прочитать массив и затем выводить его после каждой вставки). Написала, вроде - бы хорошо работает. Но вот почему - то выводит одну и ту же строку по два раза... type array_type = array [1..1000] of int64; procedure InsertSort(var a: array_type; n: int64); var i, j, l, s: integer; begin for i := 2 to n do begin l := a[i]; j := i - 1; while (j >= 1) and (a[j] > l) do begin a[j + 1] := a[j]; j := j - 1; end; a[j + 1] := l; for s := 1 to n do write(a[s], ' '); writeln(); end; end; var a: array_type; i, n: int64; begin readln(n); for i := 1 to n do read(a[i]); InsertSort(a, n); for i := 1 to n do write(a[i], ' '); end.

Ответы на вопрос

Отвечает Иванова Таня.
Потому что у тебя идет печать массива для каждого элемента, даже если он стоит в правильном порядке относительно предыдущего, а в таком случае вставки не происходит. Добавь вот это в цикл функции:




Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
В вашем коде проблема заключается в том, что вы не обновляете значение переменной n
после каждой вставки элемента в отсортированную часть массива. Поэтому в цикле for s := 1 to n do write(a[s], ' ');
вы выводите массив полностью каждый раз, включая неотсортированную часть.
Чтобы исправить это, вы можете добавить обновление переменной n
после каждой вставки элемента. Вот исправленный код:
pascaltype array_type = array [1..1000] of int64; procedure InsertSort(var a: array_type; var n: int64); var i, j, l, s: integer; begin for i := 2 to n do begin l := a[i]; j := i - 1; while (j >= 1) and (a[j] > l) do begin a[j + 1] := a[j]; j := j - 1; end; a[j + 1] := l; n := n + 1; // Обновление значения n for s := 1 to n do write(a[s], ' '); writeln(); end; end; var a: array_type; i, n: int64; begin readln(n); for i := 1 to n do read(a[i]); InsertSort(a, n); for i := 1 to n do write(a[i], ' '); end.
Теперь после каждой вставки элемента в массив вы обновляете значение n
, чтобы оно отражало текущий размер отсортированной части массива. Это позволяет правильно выводить массив после каждой итерации сортировки.


Топ вопросов за вчера в категории Информатика

Информатика 566

Информатика 25

Информатика 22

Информатика 27

Информатика 34

Информатика 58

Информатика 63

Информатика 23
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili