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