Сортировка простым выбором - Turbo Pascal (29843)

Узнай цену своей работы

Формулировка задачи:

Отсортировать четные элементы массива с помощью простого выбора. ВНИМАНИЕ!!! Входные данные (исходный массив) и выходные данные (отсортированный массив) формировать в виде текстового файла, содержащего целые числа. есть наброски вот ...
Листинг программы
  1. program example;
  2. var
  3. f1, f2 :file of integer;
  4. i, kol, j, k, z : integer;
  5. M: array[1..100] of integer;
  6. begin
  7. assign(f1,'1.txt'); {исходный файл с данными}
  8. assign(f2,'2.txt'); {полученный файл с результатами}
  9. reset(f1);
  10. rewrite(f2);
  11. //while not eof(f1) do
  12. for i:=1 to FileSize(f1) do
  13. begin
  14. read(M[i]);
  15. Write(f1,M[i]);
  16. write(M[i], ' ');
  17. //i:=i+1;
  18. end;
  19. kol:=i-1;
  20. for i:= kol downto 2 do {процедура сортировки}
  21. begin
  22. k:=0;
  23. for j:=1 to i do
  24. if ((k=0) or (M[k]<M[j])) and (M[j] mod 2=0) then k:=j;
  25. if (k<>i) and (M[k] mod 2=0) and (M[i] mod 2=0) then
  26. begin
  27. z:=M[i];
  28. M[i]:=M[k];
  29. M[k]:=z;
  30. end;
  31. end;
  32. writeln;
  33. for i:=1 to kol do {вывод результата на экран}
  34. begin
  35. write(f2,M[i]);
  36. write42(M[i]);
  37. end;
  38. end.

Решение задачи: «Сортировка простым выбором»

textual
Листинг программы
  1. var f: text;
  2.     g: file of integer;
  3.     n, m: longword;
  4.     t, nt, mt: integer;
  5.     b: boolean;
  6. begin
  7.   writeln('+---------------------------------------+');
  8.   writeln('| 1 - ввести элементы файла вручную     |');
  9.   writeln('| Другое число - прочитать готовый файл |');
  10.   writeln('+---------------------------------------+');
  11.   write('Ваш выбор? ');
  12.   readln(t);
  13.   assign(f, 'input.txt');
  14.   if t = 1
  15.     then begin
  16.       repeat
  17.         write('Введите количество элементов файла: ');
  18.         readln(m)
  19.       until m > 0;
  20.       writeln('Введите элементы файла:');
  21.       rewrite(f);
  22.       for n := 1 to m do
  23.         begin
  24.           write(n:3, ': ');
  25.           readln(t);
  26.           writeln(f, t)
  27.         end
  28.     end;
  29.   reset(f);
  30.   assign(g, 'temp.tmp');
  31.   rewrite(g);
  32.   while not eof(f) do
  33.     begin
  34.       readln(f, t);
  35.       write(g, t)
  36.     end;
  37.   close(f);
  38.   b := true;
  39.   for n := 0 to filesize(g) - 2 do
  40.     begin
  41.       seek(g, n);
  42.       read(g, nt);
  43.       if not odd(nt)
  44.         then for m := n + 1 to filesize(g) - 1 do
  45.           begin
  46.             seek(g, m);
  47.             read(g, mt);
  48.             if not odd(mt) and (nt > mt)
  49.               then begin
  50.                 seek(g, n);
  51.                 write(g, mt);
  52.                 seek(g, m);
  53.                 write(g, nt);
  54.                 b := false
  55.               end
  56.           end
  57.     end;
  58.   if b then writeln('Сортировка не потребовалась');
  59.   reset(g);
  60.   assign(f, 'output.txt');
  61.   rewrite(f);
  62.   for n := 0 to filesize(g) - 1 do
  63.     begin
  64.       read(g, t);
  65.       writeln(f, t)
  66.     end;
  67.   close(f);
  68.   writeln('Отсортированный файл создан.');
  69.   close(g);
  70.   erase(g);
  71.   write('Нажмите <Enter> для выхода из программы.');
  72.   readln
  73. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы