Работа 3.9 Упр.25 ГДЗ Семакин 10 класс (Информатика)
а) Получить название книг данного автора, изданных с 1960 г.
б) Определить, имеется ли книга, содержащая в своем название слово «информатика». Вывести сведения обо всех таких книгах
в) Вывести сведения о книгах, которые имеют несколько изданий (автор и названия повторяются, а годы издания разные).
Для работы с файлами записей о книгах удобно использовать тип записи book с полями autor, name, year. Тогда можно последовательно просматривать файл и выполнять нужные отборы.
а) Чтобы получить названия книг заданного автора, изданных с $$1960$$ года, нужно пройти по всему файлу и вывести поле name для тех записей, где $$autor = pos$$ и $$year \ge 1960$$.
б) Чтобы определить, есть ли книга, в названии которой встречается слово «информатика», и вывести сведения обо всех таких книгах, при просмотре файла нужно проверять, содержит ли поле name это слово. Для найденных записей выводятся автор, название и год издания.
в) Книги с несколькими изданиями — это записи, у которых совпадают автор и название, но различаются годы издания. Для решения нужно сравнивать записи попарно и выводить те, для которых найдётся другая запись с теми же autor и name, но другим year.
var
f: file of book;
q, p: book;
pos: string[20];
found: boolean;procedure SearchByAuthor;
begin
Write(‘Введите нужного Вам автора: ‘);
Readln(pos);
Seek(f, 0);
while not eof(f) do
begin
Read(f, q);
if (q.autor = pos) and (q.year >= 1960) then
Writeln(q.name);
end;
end;procedure SearchInformатика;
begin
found := false;
Seek(f, 0);
while not eof(f) do
begin
Read(f, q);
if Pos(‘информатика’, q.name) > 0 then
begin
found := true;
Writeln(q.autor, ‘ ‘, q.name, ‘ ‘, q.year);
end;
end;
if not found then
Writeln(‘Таких книг нет’);
end;procedure SearchMultipleEditions;
begin
Seek(f, 0);
while not eof(f) do
begin
Read(f, q);
Seek(f, FilePos(f));
while not eof(f) do
begin
Read(f, p);
if (q.autor = p.autor) and (q.name = p.name) and (q.year <> p.year) then
begin
Writeln(q.autor, ‘ ‘, q.name, ‘ ‘, q.year);
Writeln(p.autor, ‘ ‘, p.name, ‘ ‘, p.year);
end;
end;
end;
end;
В программе уже есть процедуры добавления записи, вывода файла, поиска по автору, очистки файла и меню. Для выполнения пунктов б) и в) достаточно добавить соответствующие процедуры поиска по слову в названии и по нескольким изданиям.
Ответ
а) Вывести названия книг заданного автора, изданных с $$1960$$ года, если $$autor = pos$$ и $$year \ge 1960$$.
б) Проверить наличие слова «информатика» в названии и вывести все такие книги.
в) Вывести книги, у которых совпадают автор и название, но различаются годы издания.