Сортировка простым выбором - Turbo Pascal (29843)
Формулировка задачи:
Отсортировать четные элементы массива с помощью простого выбора.
ВНИМАНИЕ!!! Входные данные (исходный массив) и выходные данные (отсортированный массив) формировать в виде текстового файла, содержащего целые числа.
есть наброски вот ...
Листинг программы
- program example;
- var
- f1, f2 :file of integer;
- i, kol, j, k, z : integer;
- M: array[1..100] of integer;
- begin
- assign(f1,'1.txt'); {исходный файл с данными}
- assign(f2,'2.txt'); {полученный файл с результатами}
- reset(f1);
- rewrite(f2);
- //while not eof(f1) do
- for i:=1 to FileSize(f1) do
- begin
- read(M[i]);
- Write(f1,M[i]);
- write(M[i], ' ');
- //i:=i+1;
- end;
- kol:=i-1;
- for i:= kol downto 2 do {процедура сортировки}
- begin
- k:=0;
- for j:=1 to i do
- if ((k=0) or (M[k]<M[j])) and (M[j] mod 2=0) then k:=j;
- if (k<>i) and (M[k] mod 2=0) and (M[i] mod 2=0) then
- begin
- z:=M[i];
- M[i]:=M[k];
- M[k]:=z;
- end;
- end;
- writeln;
- for i:=1 to kol do {вывод результата на экран}
- begin
- write(f2,M[i]);
- write42(M[i]);
- end;
- end.
Решение задачи: «Сортировка простым выбором»
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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д