Типизированный файл и сортировка - Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста, написать программу для контрольной. Условие: Ввести неупорядоченную последовательность из 20 элементов. Сохранить последовательность в файле. Написать процедуры упорядочивания последовательности методом шейкер-сортировки, вставки К новых элементов на правильное место в упорядоченную последовательность. Вывести результаты всех обработок последовательности. Примечание: программа должна быть написана с использованием массива.

Решение задачи: «Типизированный файл и сортировка»

textual
Листинг программы
  1. uses crt;
  2. const n=20;
  3. type mas=array[1..2*n] of integer;
  4. procedure sheiker(var m:mas);
  5. var d,i,j,k,x:integer;
  6. begin
  7. d:=1; i:=0;
  8. for k:=n-1 downto 1 do { k - количество сравниваемых пар }
  9.  begin
  10.   i:=i+d;
  11.   for j:=1 to k do
  12.    begin
  13.     if (m[i]-m[i+d])*d>0 then
  14.      {меняем местами соседние элементы}
  15.       begin
  16.        x:=m[i];
  17.        m[i]:=m[i+d];
  18.        m[i+d]:=x;
  19.       end;
  20.      i:=i+d;
  21.     end;
  22.    d:=-d; {меняем направление движения на противоположное}
  23.  end;
  24. writeln('Отсортированный массив');
  25. for i:=1 to n do
  26. write(m[i]:4);
  27. writeln;
  28. end;
  29. procedure vstavka(var m:mas;var k:integer);
  30. var b,i,j:integer;
  31. begin
  32. write('Введите число для вставки b=');
  33. readln(b);
  34. k:=k+1;
  35. if b>=m[k-1] then m[k]:=b
  36. else
  37.  begin
  38.   for i:=1 to k-1 do
  39.    if m[i]>=b then
  40.     begin
  41.      for j:=k downto i+1 do
  42.      m[j]:=m[j-1];
  43.      m[i]:=b;
  44.      break;
  45.     end;
  46.  end;
  47. writeln('Всиавка числа ',b);
  48. for i:=1 to k do
  49. write(m[i]:4);
  50. writeln;
  51. end;
  52.  
  53.  
  54. var f:file of integer;
  55.     m:mas;
  56.     i,a,k,p:integer;
  57. begin
  58. randomize;
  59. assign(f,'chisla');
  60. rewrite(f);
  61. for i:=1 to n do
  62.  begin
  63.   a:=random(100);
  64.   write(f,a);
  65.  end;
  66. writeln('Последовательность');
  67. reset(f);
  68. for i:=1 to n do
  69.  begin
  70.   read(f,a);
  71.   write(a:4);
  72.   m[i]:=a;
  73.  end;
  74. close(f);
  75. writeln;
  76. sheiker(m);
  77. repeat
  78. write('Сколько чисел вставить от 1 до 5 k=');
  79. readln(k);
  80. until k in [1..5];
  81. p:=n;
  82. for i:=1 to k do
  83. vstavka(m,p);
  84. end.

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

  1. Используемые библиотеки и константы:
    • uses crt; - используется для взаимодействия с экраном.
    • const n=20; - объявление константы, значение которой равно 20.
  2. Объявление типа и переменных:
    • type mas=array[1..2*n] of integer; - объявляется тип массива.
    • var f:file of integer; - объявляется файл для хранения целых чисел.
    • m:mas; - объявляется массив m типа mas.
    • i,a,k,p:integer; - объявляются переменные типа integer.
  3. Процедура сортировки методом шейкера:
    • Происходит сортировка массива m методом шейкера.
  4. Процедура вставки:
    • Пользователь вводит число b, которое затем вставляется в массив m.
  5. Основная часть программы:
    • Генерируются случайные числа и записываются в файл 'chisla'.
    • Эти числа читаются из файла и записываются в массив m.
    • Производится сортировка массива m методом шейкера.
    • Пользователь вводит количество чисел для вставки и эти числа вставляются в массив m с помощью процедуры вставки.

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


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

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

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы