Типизированный файл и сортировка - 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 с помощью процедуры вставки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д