Примеры задач

Файлы


Даны два файла, причем первый А-целочисленный, т.е. его элементы целые числа, а второй В-символьный. Вывести на экран все числа первого, а рядом с ним элементы второго с этим номером, если элементов второго файла с данным номером нет, то сообщить об этом.

Методика решения

Используемые переменные:
A,b – файловые переменные,
N – целое число,
M – символ,
Kol – количество элементов файла,
I – параметр цикла.

Для реализации данной программы понадобятся следующие процедуры и функции для работы с файлами: seek(f,N) — устанавливает маркер на позицию N ; eof(f) — возвращает TRUE , если найден конец файла.
Для начала заполняем файлы А и В :
открываем файлы для записи, считываем с экрана элементы и записываем их в файлы, после чего файлы закрываем.
Далее необходимо вывести на экран числа из файла a и элементы с соответствующими номерами из файла b . Для этого открываем файлы А и В для чтения. Далее в цикле, считываем числа ( n ) из первого файла, во втором файле с помощью процедуры seek(b, n-1) ставим маркер перед элементом с соответствующим номером, считываем этот элемент из файла b , затем выводим на экран число из первого файла и элемент с соответствующим номером из второго файла. Цикл повторяем пока не закончится файл a ( while not(eof(a)) ).
И в завершении программы закрываем оба файла.

Листинг программы

Program ex6_1;
Uses Crt;
Var a:file of integer;
b:file of char;
n,i,kol:integer; m:char;
Begin Clrscr;
Assign(a,'A.dat');
Assign(b,'B.dat');
Write('Введите колличество элементов файла A: ');
Readln(kol);
Writeln('Введите элементы файла A:');
Rewrite(a);
For i:=1 to kol do
begin
Readln(n);
Write(a,n);
end;
Close(a);
Write('Введите колличество элементов файла B: ');
Readln(kol);
Writeln('Введите элементы файла B:');
Rewrite(b);
For i:=1 to kol do
begin
Readln(m);
Write(b,m);
end;
Close(b);
Writeln;
reset(a); reset(b);
While not eof(a) do
begin
read(a,n);
seek(b,n-1);
Write(n,' ');
If not eof(b) then
begin
read(b,m);
Writeln(m);
end
else Writeln('Элемента второго файла с данным номером нет');
end;
Close(a);
Close(b);
Readkey;
End.

Запустить программу






Назад