Сортировка простым выбором - Turbo Pascal (29843)
Формулировка задачи:
Отсортировать четные элементы массива с помощью простого выбора.
ВНИМАНИЕ!!! Входные данные (исходный массив) и выходные данные (отсортированный массив) формировать в виде текстового файла, содержащего целые числа.
есть наброски вот ...
Решение задачи: «Сортировка простым выбором»
textual
Листинг программы
var f: text; g: file of integer; n, m: longword; t, nt, mt: integer; b: boolean; begin writeln('+---------------------------------------+'); writeln('| 1 - ввести элементы файла вручную |'); writeln('| Другое число - прочитать готовый файл |'); writeln('+---------------------------------------+'); write('Ваш выбор? '); readln(t); assign(f, 'input.txt'); if t = 1 then begin repeat write('Введите количество элементов файла: '); readln(m) until m > 0; writeln('Введите элементы файла:'); rewrite(f); for n := 1 to m do begin write(n:3, ': '); readln(t); writeln(f, t) end end; reset(f); assign(g, 'temp.tmp'); rewrite(g); while not eof(f) do begin readln(f, t); write(g, t) end; close(f); b := true; for n := 0 to filesize(g) - 2 do begin seek(g, n); read(g, nt); if not odd(nt) then for m := n + 1 to filesize(g) - 1 do begin seek(g, m); read(g, mt); if not odd(mt) and (nt > mt) then begin seek(g, n); write(g, mt); seek(g, m); write(g, nt); b := false end end end; if b then writeln('Сортировка не потребовалась'); reset(g); assign(f, 'output.txt'); rewrite(f); for n := 0 to filesize(g) - 1 do begin read(g, t); writeln(f, t) end; close(f); writeln('Отсортированный файл создан.'); close(g); erase(g); write('Нажмите <Enter> для выхода из программы.'); readln end.
Объяснение кода листинга программы
- Создание переменной
f
типаtext
и присвоение ей значенияinput.txt
. - Вывод сообщения с предложением ввести элементы файла вручную или прочитать готовый файл.
- Получение выбора пользователя и сохранение его в переменной
t
. - Создание переменной
m
типаlongword
и присвоение ей значения 0. - Создание переменной
b
типаboolean
со значениемtrue
. - Вывод сообщения «Введите количество элементов файла:» и получение значения
m
от пользователя. - Вывод сообщения «Введите элементы файла:» и открытие файла для записи.
- Повторение цикла до тех пор, пока
m
больше 0. В каждой итерации цикла пользователь должен ввести элемент файла и записать его в файл. - Установка значения
m
равным 0 перед повторным циклом. - Закрытие файла после окончания цикла.
- Создание переменной
g
типаfile of integer
и присвоение ей значенияtemp.tmp
. - Открытие файла
g
для чтения. - Чтение файла
f
до конца и запись прочитанных данных в файлg
. - Проверка каждого прочитанного блока данных на нечетность. Если блок данных нечетный, то записывается следующий блок данных.
- Если блок данных нечетный и следующий блок данных больше текущего, то записывается следующий блок данных.
- Если блок данных нечетный и следующий блок данных меньше текущего, то записывается текущий блок данных.
- Если блок данных нечетный и следующий блок данных равен текущему блоку данных, то переменная
b
устанавливается в значениеfalse
. - Закрытие файла
f
и перезапись файлаg
с новым именем. - Вывод сообщения «Отсортированный файл создан».
- Закрытие файла
g
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д