Обьединить две процедуры в одну программу - Turbo Pascal
Формулировка задачи:
Есть две процедуры сортирования (за код спасибо mik-a-el).
Создать программу с этими двумя процедурами, в которой пользователю будет дан выбор:
1. Использовать сортировку вставками.
2. Использовать сортировку выбором.
3. Выйти с программы (halt).
Первая процедура:
Вторая процедура:
Элементы массива вводить с клавиатуры.
Решение задачи: «Обьединить две процедуры в одну программу»
textual
Листинг программы
uses crt; const n = 5; type mas = array [1..n] of integer; var x: mas; choise, i: integer; { Сортировка вставками } procedure InsertSort(var A: mas ); var i, k: Integer; x: Integer; begin { Вставляем в уже отсортированную часть элементы со 2 по max } for i := 2 to n do begin k := i; x := A[i]; { Передвигаем на 1 позицию направо элементы, большие вставляемого элемента (он записан в x) } { Условие k > 1 гарантирует, что мы не выйдем за границу массива, если вставляется элемент, меньший всех предыдущих. В Turbo Pascal условия вычисляются в обратном порядке, поэтому условие цикла while нужно заменить на (A[k - 1] > x) and (k > 1) } while (k > 1) and (A[k - 1] > x) do begin A[k] := A[k - 1]; k := k - 1; end; { Вставляем элемент в нужную позицию } A[k] := x; end; end; { Сортировка выбором } procedure SelectSort2(var A: mas); var i, j, m: Integer; x: Integer; begin { Ищем элементы для позиций с 1 по max - 1 } for i := 1 to n - 1 do begin m := i; x := A[i]; { Просматриваем все еще не выбранные элементы } for j := i + 1 to n do { Если встречается элемент, меньший того, что сейчас стоит на позиции m, запоминаем в m его позицию, а в x - его значение } if x > A[j] then begin m := j; x := A[j]; end; { Меняем местами i-ый элемент, и минимальный из оставшихся - m-ый элемент, сохраненный в x } A[m] := A[i]; A[i] := x; end; end; begin writeln('Введите ', n, ' элементов массива: '); for i := 1 to n do readln(x[i]); clrscr; writeln('Исходный массив: '); for i := 1 to n do write(x[i]:5); writeln; writeln('Выберите вид сортировки: '); writeln('1. Вставками '); writeln('2. Выбором '); writeln('3. Выход из программы:'); readln(choise); case choise of 1: InsertSort(x); 2: SelectSort2(x); 3: exit; end; writeln('Отсортированный массив: '); for i := 1 to n do write(x[i]:5); readln; end.
Объяснение кода листинга программы
- Создаётся массив целых чисел, размер которого определяется переменной
n
. - Задаются две процедуры сортировки:
InsertSort
иSelectSort2
. - В основной программе пользователю предлагается ввести количество элементов массива и выбрать вид сортировки.
- После ввода данных и выбора вида сортировки, вызывается соответствующая процедура сортировки.
- Результаты сортировки выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д