Обьединить две процедуры в одну программу - 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.

Объяснение кода листинга программы

  1. Создаётся массив целых чисел, размер которого определяется переменной n.
  2. Задаются две процедуры сортировки: InsertSort и SelectSort2.
  3. В основной программе пользователю предлагается ввести количество элементов массива и выбрать вид сортировки.
  4. После ввода данных и выбора вида сортировки, вызывается соответствующая процедура сортировки.
  5. Результаты сортировки выводятся на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы