Сортировка содержимого файла - 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
Листинг программы
const max=50;
var a:array[1..max] of integer;//массив строк-чисел
    s:array[1..50] of string; //массив прочих строк
    n,m,i,j,x:integer;
    y:string;
    f:text;
begin
assign(f,'input.txt');//файл в папке с программой
reset(f);
n:=0;
m:=0;
while not seekeof(f) do
 begin
  readln(f,y);
  val(y,x,i);
  if i=0 then
   begin
    n:=n+1;
    a[n]:=strtoint(y)
   end
  else
   begin
    m:=m+1;
    s[m]:=y;
   end;
 end;
close(f);
//сортируем числа
for i:=2 to n do
 begin
  x:=a[i];
  j:=i-1;
  while (j>=1) and (a[j]>x) do
   begin
    a[j+1]:=a[j];
    j:=j-1;
   end;
  a[j+1]:=x;
 end;
//сортируем строки
for i:=2 to m do
 begin
  y:=s[i];
  j:=i-1;
  while (j>=1) and (s[j]>y) do
   begin
    s[j+1]:=s[j];
    j:=j-1;
   end;
  s[j+1]:=y;
 end;
//записываем в новый файл
assign(f,'output.txt');
rewrite(f);
for i:=1 to n do
writeln(f,a[i]);
for i:=1 to m do
writeln(f,s[i]);
close(f);
writeln('Файл input.txt прочитан, отсортирован, результат записан в файл output.txt')
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