В двух файлах записаны отсортированные массивы, объединить их, записать результат в третий файл - Pascal ABC
Формулировка задачи:
В двух файлах записаны отсортированные по возрастанию массивы неизвестной длины. Объединить их и записать результат в третий файл. Полученный массив также должен быть отсортирован по возрастанию.
Решение задачи: «В двух файлах записаны отсортированные массивы, объединить их, записать результат в третий файл»
textual
Листинг программы
- var f1,f2,f3:text;
- n,i,a,b:integer;
- begin
- //создадим исходные файлы, можно вынести в отдельную программу
- //или создать файлы вручную
- randomize;
- assign(f1,'f1.txt');
- rewrite(f1);
- assign(f2,'f2.txt');
- rewrite(f2);
- write('Сколько чисел ввести в первый файл n=');
- readln(n);
- writeln('Содержание файла f1:');
- a:=1;
- for i:=1 to n do
- begin
- a:=a+random(5);
- write(f1,' ',a);
- write(' ',a);
- end;
- writeln;
- write('Сколько чисел ввести во второй файл n=');
- readln(n);
- writeln('Содержание файла f2:');
- a:=1;
- for i:=1 to n do
- begin
- a:=a+random(5);
- write(f2,' ',a);
- write(' ',a);
- end;
- writeln;
- reset(f1);
- reset(f2);
- assign(f3,'f3.txt');
- rewrite(f3);
- //если не конец файла, то читаем числа иначе создаем барьер из
- //максимально возможного целого числа
- if not eof(f1) then read(f1,a) else a:=maxint;
- if not eof(f2) then read(f2,b) else b:=maxint;
- while (a<maxint) or (b<maxint) do//пока оба файла не кончились
- begin
- if (a<=b) and (a<maxint) then //если 1<=2
- begin
- write(f3,' ',a);//1 пишем в файл 3
- if not eof(f1) then read(f1,a) else a:=maxint;//если не конец 1,
- //то читаем следующее , иначе барьер
- end
- else if b<a then //иначе если 2<1 то же но со 2 файлом
- begin
- write(f3,' ',b);
- if not eof(f2) then read(f2,b) else b:=maxint;
- end;
- end;
- reset(f3);//смотрим что получилось
- writeln('Слияние файлов:');
- while not eof(f3) do
- begin
- read(f3,a);
- write(' ',a);
- end;
- close(f1);
- close(f2);
- close(f3);
- end.
Объяснение кода листинга программы
- Создаем три переменные типа text: f1, f2, f3, которые будут использоваться для работы с файлами.
- Задаем начальные значения переменным n, i, a, b, которые будут использоваться для генерации случайных чисел.
- Создаем два файла: f1.txt и f2.txt.
- Открываем файлы для записи.
- Выводим вопрос пользователю о количестве чисел, которые нужно ввести в каждый файл.
- Читаем введенное пользователем значение и сохраняем его в переменную n.
- Генерируем случайные числа для первого файла (f1.txt).
- Записываем сгенерированные числа в файл f1.txt.
- Перемещаемся к файлу f2.txt.
- Генерируем случайные числа для второго файла (f2.txt).
- Записываем сгенерированные числа в файл f2.txt.
- Сбрасываем файлы f1.txt и f2.txt.
- Создаем новый файл f3.txt.
- Перемещаемся к файлу f3.txt.
- Читаем данные из файла f1.txt или генерируем максимальное значение, если файл не пуст.
- Записываем число из файла f1.txt в файл f3.txt.
- Проверяем, не закончились ли данные в файле f1.txt. Если нет, переходим к следующему шагу, иначе генерируем максимальное значение и записываем его в файл f3.txt.
- Аналогично проверяем файл f2.txt и переходим к следующему шагу, либо генерируем максимальное значение и записываем его в файл f3.txt.
- Перемещаемся к файлу f3.txt.
- Закрываем все файлы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д