В двух файлах записаны отсортированные массивы, объединить их, записать результат в третий файл - Pascal ABC

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

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

В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и записать результат в третий файл. Полученный массив также должен быть отсортирован по возрастанию.

Решение задачи: «В двух файлах записаны отсортированные массивы, объединить их, записать результат в третий файл»

textual
Листинг программы
  1. var f1,f2,f3:text;
  2.     n,i,a,b:integer;
  3. begin
  4. //создадим исходные файлы, можно вынести в отдельную программу
  5. //или создать файлы вручную
  6. randomize;
  7. assign(f1,'f1.txt');
  8. rewrite(f1);
  9. assign(f2,'f2.txt');
  10. rewrite(f2);
  11. write('Сколько чисел ввести в первый файл n=');
  12. readln(n);
  13. writeln('Содержание файла f1:');
  14. a:=1;
  15. for i:=1 to n do
  16.  begin
  17.   a:=a+random(5);
  18.   write(f1,' ',a);
  19.   write(' ',a);
  20.  end;
  21. writeln;
  22. write('Сколько чисел ввести во второй файл n=');
  23. readln(n);
  24. writeln('Содержание файла f2:');
  25. a:=1;
  26. for i:=1 to n do
  27.  begin
  28.   a:=a+random(5);
  29.   write(f2,' ',a);
  30.   write(' ',a);
  31.  end;
  32. writeln;
  33. reset(f1);
  34. reset(f2);
  35. assign(f3,'f3.txt');
  36. rewrite(f3);
  37. //если не конец файла, то читаем числа иначе создаем барьер из
  38. //максимально возможного целого числа
  39. if not eof(f1) then read(f1,a) else a:=maxint;
  40. if not eof(f2) then read(f2,b) else b:=maxint;
  41. while (a<maxint) or (b<maxint) do//пока оба файла не кончились
  42.  begin
  43.   if (a<=b) and (a<maxint) then //если 1<=2
  44.    begin
  45.     write(f3,' ',a);//1 пишем в файл 3
  46.     if not eof(f1) then read(f1,a) else a:=maxint;//если не конец 1,
  47.                                                   //то читаем следующее , иначе барьер
  48.   end
  49.   else if b<a then //иначе если 2<1 то же но со 2 файлом
  50.    begin
  51.     write(f3,' ',b);
  52.     if not eof(f2) then read(f2,b) else b:=maxint;
  53.   end;
  54. end;
  55. reset(f3);//смотрим что получилось
  56. writeln('Слияние файлов:');
  57. while not eof(f3) do
  58.  begin
  59.   read(f3,a);
  60.   write(' ',a);
  61.  end;
  62. close(f1);
  63. close(f2);
  64. close(f3);
  65. end.

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

  1. Создаем три переменные типа text: f1, f2, f3, которые будут использоваться для работы с файлами.
  2. Задаем начальные значения переменным n, i, a, b, которые будут использоваться для генерации случайных чисел.
  3. Создаем два файла: f1.txt и f2.txt.
  4. Открываем файлы для записи.
  5. Выводим вопрос пользователю о количестве чисел, которые нужно ввести в каждый файл.
  6. Читаем введенное пользователем значение и сохраняем его в переменную n.
  7. Генерируем случайные числа для первого файла (f1.txt).
  8. Записываем сгенерированные числа в файл f1.txt.
  9. Перемещаемся к файлу f2.txt.
  10. Генерируем случайные числа для второго файла (f2.txt).
  11. Записываем сгенерированные числа в файл f2.txt.
  12. Сбрасываем файлы f1.txt и f2.txt.
  13. Создаем новый файл f3.txt.
  14. Перемещаемся к файлу f3.txt.
  15. Читаем данные из файла f1.txt или генерируем максимальное значение, если файл не пуст.
  16. Записываем число из файла f1.txt в файл f3.txt.
  17. Проверяем, не закончились ли данные в файле f1.txt. Если нет, переходим к следующему шагу, иначе генерируем максимальное значение и записываем его в файл f3.txt.
  18. Аналогично проверяем файл f2.txt и переходим к следующему шагу, либо генерируем максимальное значение и записываем его в файл f3.txt.
  19. Перемещаемся к файлу f3.txt.
  20. Закрываем все файлы.

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


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

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

9   голосов , оценка 4.333 из 5

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

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

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