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

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

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

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

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

textual
Листинг программы
uses crt;
const n=20;
type mas=array[1..2*n] of integer;
procedure sheiker(var m:mas);
var d,i,j,k,x:integer;
begin
d:=1; i:=0;
for k:=n-1 downto 1 do { k - количество сравниваемых пар }
 begin
  i:=i+d;
  for j:=1 to k do
   begin
    if (m[i]-m[i+d])*d>0 then
     {меняем местами соседние элементы}
      begin
       x:=m[i];
       m[i]:=m[i+d];
       m[i+d]:=x;
      end;
     i:=i+d;
    end;
   d:=-d; {меняем направление движения на противоположное}
 end;
writeln('Отсортированный массив');
for i:=1 to n do
write(m[i]:4);
writeln;
end;
procedure vstavka(var m:mas;var k:integer);
var b,i,j:integer;
begin
write('Введите число для вставки b=');
readln(b);
k:=k+1;
if b>=m[k-1] then m[k]:=b
else
 begin
  for i:=1 to k-1 do
   if m[i]>=b then
    begin
     for j:=k downto i+1 do
     m[j]:=m[j-1];
     m[i]:=b;
     break;
    end;
 end;
writeln('Всиавка числа ',b);
for i:=1 to k do
write(m[i]:4);
writeln;
end;
 
 
var f:file of integer;
    m:mas;
    i,a,k,p:integer;
begin
randomize;
assign(f,'chisla');
rewrite(f);
for i:=1 to n do
 begin
  a:=random(100);
  write(f,a);
 end;
writeln('Последовательность');
reset(f);
for i:=1 to n do
 begin
  read(f,a);
  write(a:4);
  m[i]:=a;
 end;
close(f);
writeln;
sheiker(m);
repeat
write('Сколько чисел вставить от 1 до 5 k=');
readln(k);
until k in [1..5];
p:=n;
for i:=1 to k do
vstavka(m,p);
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
Похожие ответы