1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Работа 3.9 Упр.25 ГДЗ Семакин 10 класс (Информатика)
Семакин, Хеннер, Шеина
10 класс
Автор
Семакин, Хеннер, Шеина

Работа 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$$.

б) Проверить наличие слова «информатика» в названии и вывести все такие книги.

в) Вывести книги, у которых совпадают автор и название, но различаются годы издания.



Общая оценка
4.4 / 5
Другие учебники
Другие предметы