Оставить в f только те компоненты fi, которые больше компонентов gi файла g - Turbo Pascal
Формулировка задачи:
Помогите пожалуйста решить, рекомендуется пользоваться средствами прямого доступа к записям типизованных файлов
Даны целочисленные файлы f и g одинаковой длины. Оставить в f только те компоненты fi, которые больше компонентов gi файла g
Решение задачи: «Оставить в f только те компоненты fi, которые больше компонентов gi файла g»
textual
Листинг программы
uses crt; var f,g:file of integer; n,i,j,k,a,b:integer; begin clrscr; randomize; assign(f,'filef'); rewrite(f); assign(g,'fileg'); rewrite(g); repeat write('Сколько чисел записать в файлы n>1 n='); readln(n); until n>1; for i:=1 to n do begin a:=random(50); write(f,a); b:=random(50); write(g,b); end; writeln('Содержание исходного файла F:'); reset(f); while not eof(f) do begin read(f,a); write(a:4); end; writeln; writeln('Содержание файла G:'); reset(g); while not eof(g) do begin read(g,a); write(a:4); end; writeln; {будем удалять из файла F которые <=G[i]} reset(f); reset(g); for i:=filesize(f)-1 downto 0 do begin seek(f,i); read(f,a); seek(g,i); read(g,b); if a<b then begin if i=filesize(f) then begin seek(f,i); truncate(f); end else begin for j:=i to filesize(f)-2 do{идем вперед} begin seek(f,j+1);{переставляем - сдвигаем - записи вверх на 1} read(f,a); seek(f,j); write(f,a); end; seek(f,filesize(f)-1); truncate(f); end; end; end; close(g); reset(f); if filesize(f)=0 then write('Все элементы из файла F удалены') else begin writeln('Числа, оставшиеся в файле F'); while not eof(f) do begin read(f,a); write(a:4); end; end; close(f); readln end.
Объяснение кода листинга программы
- Создаются два файла: f и g.
- Задается вопрос пользователю, сколько чисел записать в файлы.
- В цикле записываются случайные числа в файлы f и g.
- Затем происходит чтение содержимого файлов f и g.
- Далее начинается цикл, который удаляет из файла f числа, которые меньше или равны числам в файле g.
- После завершения цикла происходит вывод остатка содержимого файла f.
- Если после удаления всех меньших чисел в файле f остаются числа, то выводится сообщение об этом.
- Цикл чтения и записи чисел в файлы продолжается до тех пор, пока в файле f не останется ноль чисел.
- После этого происходит закрытие файлов и вывод сообщения о завершении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д