1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
(Сам и контр)
Задание 4 Вариант 3 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)
Босова, Босова, Аквилянов
11 класс
Класс
11
Предмет
Информатика
Автор
Босова, Босова, Аквилянов

Задание 4 Вариант 3 Самостоятельная работа 5 ГДЗ Рабочая тетрадь Босова 11 класс (Информатика)

Задача
  1. Провели опрос $$N$$ студентов литературного института, каждый из которых назвал фамилии двух своих любимых писателей. Напишите программу, определяющую, сколько разных писателей было названо и сколько раз был назван каждый из них. Запишите текст программы.
Подробный ответ

Для подсчёта разных писателей удобно использовать множество: в него нельзя добавить одинаковый элемент дважды. Сначала последовательно считываем фамилии всех студентов и заносим новые фамилии в множество и в дополнительный массив. Затем для каждой фамилии из массива считаем, сколько раз она встретилась среди всех введённых данных.

program s5_v3_4;
const
  n = 5;
type
  avtor = record
    fam: string;
    kol: integer;
  end;
var
  a: array [1..2 * n] of string;
  i, j, k: integer;
  m: set of string;
  b: array [1..2 * n] of avtor;
begin
  k := 0;
  m := [];
  for i := 1 to 2 * n do
  begin
    readln(a[i]);
    if not (a[i] in m) then
    begin
      m := m + [a[i]];
      k := k + 1;
      b[k].fam := a[i];
    end;
  end;
  writeln(‘Количество разных писателей k=’, k);
  for i := 1 to k do
  begin
    b[i].kol := 0;
    for j := 1 to 2 * n do
      if b[i].fam = a[j] then inc(b[i].kol);
    writeln(b[i].fam, ‘ названо ‘, b[i].kol, ‘ раз’);
  end;
end.

Во второй версии программы используется запись, где для каждого писателя хранятся фамилия и количество упоминаний. Это удобно, если дальше нужно обрабатывать результаты.

program s5_v3_4;
const
  n = 5;
type
  avtor = record
    fam: string;
    kol: integer;
  end;
var
  a: array [1..2 * n] of string;
  i, j, k: integer;
  m: set of string;
  b: array [1..2 * n] of avtor;
begin
  k := 0;
  m := [];
  for i := 1 to 2 * n do
  begin
    readln(a[i]);
    if not (a[i] in m) then
    begin
      m := m + [a[i]];
      k := k + 1;
      b[k].fam := a[i];
    end;
  end;
  writeln(‘Количество разных писателей k=’, k);
  for i := 1 to k do
  begin
    b[i].kol := 0;
    for j := 1 to 2 * n do
      if b[i].fam = a[j] then inc(b[i].kol);
    writeln(b[i].fam, ‘ названо ‘, b[i].kol, ‘ раз’);
  end;
end.

Ответ

Программа определяет количество разных писателей и число упоминаний каждого из них.



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