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

Решение #1

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

Рассмотрим вариант решения задания из учебника Босова, Босова, Аквилянов 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('Ввод и заполнение множества');
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.
*Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания.

Похожие решебники

*размещая тексты в комментариях ниже, вы автоматически соглашаетесь с пользовательским соглашением