Сортировка содержимого файла - Pascal ABC

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

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

Помогите с заданием 1 Входной файл f1 содержит данные сосотоящие из целых и строковых чисел 2 Эти данные записаны в столбец 3 Строчные данные содержат любые символы, без пробелов 4 Выходной файл f2 должен быть результат отсортированным по возрастанию 5 Методом Сортировки вставки 6 Входной файл f1 содержит символов не более 50 Пример f1.txt 58 5 u 1 9 f2.txt 1 5 9 58 u

Решение задачи: «Сортировка содержимого файла»

textual
Листинг программы
  1. const max=50;
  2. var a:array[1..max] of integer;//массив строк-чисел
  3.     s:array[1..50] of string; //массив прочих строк
  4.     n,m,i,j,x:integer;
  5.     y:string;
  6.     f:text;
  7. begin
  8. assign(f,'input.txt');//файл в папке с программой
  9. reset(f);
  10. n:=0;
  11. m:=0;
  12. while not seekeof(f) do
  13.  begin
  14.   readln(f,y);
  15.   val(y,x,i);
  16.   if i=0 then
  17.    begin
  18.     n:=n+1;
  19.     a[n]:=strtoint(y)
  20.    end
  21.   else
  22.    begin
  23.     m:=m+1;
  24.     s[m]:=y;
  25.    end;
  26.  end;
  27. close(f);
  28. //сортируем числа
  29. for i:=2 to n do
  30.  begin
  31.   x:=a[i];
  32.   j:=i-1;
  33.   while (j>=1) and (a[j]>x) do
  34.    begin
  35.     a[j+1]:=a[j];
  36.     j:=j-1;
  37.    end;
  38.   a[j+1]:=x;
  39.  end;
  40. //сортируем строки
  41. for i:=2 to m do
  42.  begin
  43.   y:=s[i];
  44.   j:=i-1;
  45.   while (j>=1) and (s[j]>y) do
  46.    begin
  47.     s[j+1]:=s[j];
  48.     j:=j-1;
  49.    end;
  50.   s[j+1]:=y;
  51.  end;
  52. //записываем в новый файл
  53. assign(f,'output.txt');
  54. rewrite(f);
  55. for i:=1 to n do
  56. writeln(f,a[i]);
  57. for i:=1 to m do
  58. writeln(f,s[i]);
  59. close(f);
  60. writeln('Файл input.txt прочитан, отсортирован, результат записан в файл output.txt')
  61. end.

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

  1. Создается переменная max со значением 50, которая будет использоваться для определения размера массива.
  2. Создается два массива: a и s. Массив a предназначен для хранения чисел, а массив s - для хранения строк. Оба массива имеют размер 50 элементов.
  3. Создаются три переменные: n, m, i, j, x. Переменная n будет использоваться для отслеживания количества чисел в массиве a, а переменная m - для отслеживания количества строк в массиве s. Переменные i, j и x будут использоваться для работы с числами и строками соответственно.
  4. Открывается файл input.txt с помощью функции assign и устанавливается режим чтения с помощью функции reset.
  5. Запускается цикл while до тех пор, пока не будет достигнут конец файла с помощью функции seekeof. Внутри цикла считывается строка из файла с помощью функции readln и присваивается переменной y.
  6. Проверяется, является ли строка пустой. Если да, то увеличивается значение переменной n на единицу и присваивается элементу массива a значение строки, прочитанной из файла, с помощью функции strtoint.
  7. Если строка не является пустой, то увеличивается значение переменной m на единицу и присваивается элементу массива s значение строки, прочитанной из файла.
  8. После завершения цикла while закрывается файл с помощью функции close.
  9. Запускается цикл for для сортировки чисел в массиве a. Внутри цикла сравниваются два элемента массива a. Если второй элемент больше первого, то они меняются местами с помощью функций a[j+1]:=a[j] и a[j]:=x.
  10. Запускается цикл for для сортировки строк в массиве s. Внутри цикла сравниваются два элемента массива s. Если второй элемент больше первого, то они меняются местами с помощью функций s[j+1]:=s[j] и s[j]:=y.
  11. Создается новый файл output.txt с помощью функции assign и устанавливается режим записи с помощью функции rewrite.
  12. Запускается цикл for для записи чисел из массива a в новый файл. Каждый элемент массива a записывается в файл с помощью функции writeln.
  13. Запускается цикл for для записи строк из массива s в новый файл. Каждый элемент массива s записывается в файл с помощью функции writeln.
  14. Закрывается файл с помощью функции close.
  15. Выводится сообщение о завершении работы программы.

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


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

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

14   голосов , оценка 3.929 из 5

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

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

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