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


Решение Решение Решение

Ниже вариант решения задания из учебника Босова, Босова, Аквилянов 11 класс, Бином:

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

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(taskВвод и заполнение множестваtask);

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(taskКоличество разных писателей k=task, 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], task названо task, c ,task разtask)

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(taskВвод и заполнение множестваtask);

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(taskКоличество разных писателей k=task, 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, task названо task, b[i].kol, task разtask)

end;

end.