Сортировка простым выбором - 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.

Объяснение кода листинга программы

  1. Создание переменной f типа text и присвоение ей значения input.txt.
  2. Вывод сообщения с предложением ввести элементы файла вручную или прочитать готовый файл.
  3. Получение выбора пользователя и сохранение его в переменной t.
  4. Создание переменной m типа longword и присвоение ей значения 0.
  5. Создание переменной b типа boolean со значением true.
  6. Вывод сообщения «Введите количество элементов файла:» и получение значения m от пользователя.
  7. Вывод сообщения «Введите элементы файла:» и открытие файла для записи.
  8. Повторение цикла до тех пор, пока m больше 0. В каждой итерации цикла пользователь должен ввести элемент файла и записать его в файл.
  9. Установка значения m равным 0 перед повторным циклом.
  10. Закрытие файла после окончания цикла.
  11. Создание переменной g типа file of integer и присвоение ей значения temp.tmp.
  12. Открытие файла g для чтения.
  13. Чтение файла f до конца и запись прочитанных данных в файл g.
  14. Проверка каждого прочитанного блока данных на нечетность. Если блок данных нечетный, то записывается следующий блок данных.
  15. Если блок данных нечетный и следующий блок данных больше текущего, то записывается следующий блок данных.
  16. Если блок данных нечетный и следующий блок данных меньше текущего, то записывается текущий блок данных.
  17. Если блок данных нечетный и следующий блок данных равен текущему блоку данных, то переменная b устанавливается в значение false.
  18. Закрытие файла f и перезапись файла g с новым именем.
  19. Вывод сообщения «Отсортированный файл создан».
  20. Закрытие файла g.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы