Организовать файл, содержащий информацию о книгах. Сведения о каждой из книг - это фамилия автора, название книги, количество страниц и год издания. Найти название книг данного автора, изданных не позднее определенного года. Фамилия автора и год вводятся с клавиатуры

Она приятна тем, что можно использовать типизированный файл - запись и извлечение данных сложного типа (в данном случае - запись) в/из него очень просты и не нужно преобразовывать информацию из текстового формата, как пришлось бы делать с текстовым файлом.

uses crt;
Type Book = record {Запись описывающая книгу}
title : string[20]; {Заголовок}
auname: string[20]; {Автор}
pages : word; {Количество страниц}
year : word; {Год}
end;
cat = file of book; {тип - каталог книг}

Var
f : cat;
a : book;
fnm, aut : string;
y : word;
Begin
writeln ('Vvedite imia faila: ');
readln (fnm); {Получаем имя файла для создания }
assign (f, fnm); {связываем файл с именем на носителе}
rewrite (f); {открываем файл для записи (создаём новый)}
writeln ('Najmite ''esc'' dlia vihoda');
repeat {ввод данных}
writeln ('Avtor:');
readln (a.auname);
writeln ('Zagolovok:');
readln (a.title);
writeln ('Kol-vo stranitz:');
readln (a.pages);
writeln ('God:');
readln (a.year);
write (f, a); {пишем структуру в файл}
until readkey=#27; {пока не нажата клавиша esc (её код = 27)}
close (f); {закрываем файл, чтобы сохранить изменения }

reset (f); {открываем файл для чтения }
writeln ('Vvedite avtora i god: ');
readln (aut, y);

while not eof (f) do {читаем пока не конец файла}
begin
read (f, a); {считываем очередную запись}
if (a.auname=aut) and (a.year>=y) then {если она удовлетворяет условиям}
writeln (a.title); {выводим название книги}
end;
close (f); {закрываем файл}
readkey;
end.

Скачать решение.
Hosted by uCoz