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

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

Задача

program s5_v3_4m;
const
n = 5;
var
a: array [1..2 * n] of string;
i, j, k,c: integer;
m: set of string; //множество из строк
b: array[1..2 * n] of string;
begin
k := 0;
m := [];//обнуление множества
writeln(‘Ввод и заполнение множества’);
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] := a[i]
end;
end;
Writeln(‘Количество разных писателей k=’, k);
//определение, сколько раз писатель была назван
for i := 1 to k do
begin
c := 0;
for j := 1 to 2 * n do
if b[i] = a[j] then inc(c);
writeln(b[i], ‘ названо ‘, c ,’ раз’)
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 := [];//обнуление множества
writeln(‘Ввод и заполнение множества’);
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.

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

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
Другие учебники
Другие предметы