Нейросеть

ГДЗ: Параграф § 7 / Информатика 11 класс

Страницы: 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102
Глава: Глава 2. Алгоритмы и элементы программирования
Параграф: § 7 - Запись алгоритмов на языках программирования
Учебник: Информатика 11 класс -
Автор: Босова Людмила Леонидовна
Год: 2025
Издание: 7-е издание, стереотипное

Вопросы для самопроверки:

1. Какое определение подходит для понятия «язык программирования»? Каковы состав и интерфейс среды разработки для языка, который вы используете?

Ответ:

Язык программирования — это формальная знаковая система, предназначенная для записи компьютерных программ.

Состав и интерфейс среды разработки (например, Pascal ABC.Net или Lazarus) обычно включают:

  • Область для ввода (редактирования) текста программы (кода).
  • Меню и инструментальные панели для управления проектом, компиляцией и запуском.
  • Инструменты для отладки, позволяющие пошагово выполнять программу и просматривать значения переменных.
  • Окно вывода результатов работы программы.

2. Что понимается под термином «данные» в контексте автоматизированной обработки информации?

Ответ:

Данные — это информация, представленная в виде, который делает ее пригодной для автоматизированной обработки вычислительной техникой.

3. Опишите различия между простыми и сложными структурами данных.

Ответ:

Простые структуры данных не могут быть разделены на составные части, которые были бы меньше бита (например, числовые, логические, символьные). Сложные структуры данных, такие как массивы или списки, создаются на основе простых структур и представляют собой множество элементов, связанных между собой.

4. Назовите, какие характеристики объекта однозначно определяются его типом данных.

Ответ:

Тип данных однозначно определяет:

  • Множество допустимых значений, которые может принимать объект.
  • Множество допустимых операций, которые применимы к объекту.
  • Объем выделенной памяти для его хранения.

5. Перечислите основные элементы, из которых состоит язык программирования Pascal.

Ответ:

Основными элементами языка Pascal включают:

  • Алфавит языка (латинские буквы, цифры, специальные символы).
  • Служебные слова (их значение строго определено).
  • Постоянные и переменные величины.
  • Знаки операций.
  • Стандартные функции.
  • Выражения и операторы.

6. Сформулируйте правила, по которым в языке Pascal образуются имена (идентификаторы).

Ответ:

Имена (идентификаторы) должны подчиняться следующим правилам:

  • Могут состоять из букв латинского алфавита, цифр и символа подчеркивания.
  • Должны начинаться с буквы или символа подчеркивания.
  • Не должны совпадать ни с одним из служебных слов языка.
  • Желательно, чтобы имя отражало смысл величины, которую оно обозначает.

7. Опишите назначение и принципы использования трассировочных таблиц.

Ответ:

Трассировочные таблицы используются для проверки свойств алгоритма и контроля его соответствия решаемой задаче. Они фиксируют пошаговое выполнение программы и наглядно показывают изменения значений переменных. Существуют два типа таблиц: где строка отражает результат одного действия, и где строка отражает результат выполнения группы действий (до контрольной точки).

8. Приведите примеры структур данных, используемых в языке программирования Pascal.

Ответ:

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

9. Дайте краткую характеристику основных элементов языка программирования Pascal.

Ответ:

Основными элементами являются:

  • Алфавит (латинские буквы, цифры, специальные символы).
  • Служебные слова, имеющие строго определенное значение.
  • Постоянные и переменные величины.
  • Знаки операций.
  • Выражения и операторы (инструкции для выполнения действий).

10. Опишите структуру программы на языке Pascal.

Ответ:

Типовая структура программы на Pascal включает:

program <имя программы>;var <описание переменных>;const <описание констант>;begin    <последовательность команд (операторов)>;end.

Обязательными являются блоки описания действий (begin...end).

11. Каково назначение трассировочных таблиц?

Ответ:

Трассировочные таблицы предназначены для анализа свойств алгоритма и проверки его соответствия поставленной задаче. Они позволяют наглядно отслеживать и фиксировать изменения значений переменных в процессе пошагового выполнения программы.

12. Исходными данными для следующего алгоритма являются вещественные числа \( \text{x}, \text{y}, \text{z} \): Переменной \( \text{m} \) присвоить значение \( \text{x} \). Сравнить значения \( \text{m} \) и \( \text{y} \): если \( \text{y} \) больше \( \text{m} \), переменной \( \text{m} \) присвоить значение \( \text{y} \). Сравнить значения \( \text{m} \) и \( \text{z} \): если \( \text{z} \) больше \( \text{m} \), переменной \( \text{m} \) присвоить значение \( \text{z} \). Разъясните, какую задачу решает этот алгоритм, и решите аналогичную задачу для четырех чисел \( \text{x}, \text{y}, \text{z}, \text{w} \).

Ответ:

Данный алгоритм решает задачу нахождения максимального значения среди трех чисел \( \text{x}, \text{y}, \text{z} \). Переменная \( \text{m} \) последовательно хранит наибольшее из уже рассмотренных чисел.

Аналогичный алгоритм для четырех чисел \( \text{x}, \text{y}, \text{z}, \text{w} \) на языке Pascal:

var x, y, z, w, m: real;begin  // Ввод данных, например, readln(x, y, z, w);  m := x; // Инициализация максимального значения  if y > m then m := y;  if z > m then m := z;  if w > m then m := w;  writeln('Максимальное значение: ', m);end.

Практические задания:

Для проверки простоты заданного натурального числа \( \text{n} \ge 2 \) была написана программа, использующая метод перебора всех возможных делителей. Метод перебора является достаточно распространенным для решения широкого класса задач. Усовершенствуйте эту программу, приняв во внимание, что для проверки простоты числа \( \text{n} \) достаточно искать его делители только в интервале от \( 2 \) до \( \lfloor \sqrt{\text{n}} \rfloor \).

Усовершенствованная программа на Pascal с учетом того, что достаточно искать делители до \( \lfloor \sqrt{\text{n}} \rfloor \):

var  n, i: longint;  flag: boolean;  limit: longint; // Переменная для хранения целой части корняbegin  writeln('Введите n');  read(n);  flag:=true;  limit := trunc(sqrt(n)); // Вычисляем целую часть корня из n  for i:=2 to limit do // Цикл до целой части корня    if n mod i = 0 then    begin      flag:=false;      break; // Дополнительно: прерываем цикл, как только нашли делитель    end;  if flag then writeln('Да') else writeln('Нет')end.

Примечание: Использование функции \( \text{trunc}(\text{sqrt}(\text{n})) \) позволяет вычислить \( \lfloor \sqrt{\text{n}} \rfloor \) и сократить количество итераций цикла, повышая эффективность программы, что особенно важно для больших чисел.

Найдите, какое значение примет переменная \( \text{d} \) после выполнения программы, если в результате ее работы переменная \( \text{s} \) примет значение \( 186 \). Также определите, возможно ли такое значение \( \text{d} \), при котором \( \text{s} \) будет равно \( 212 \).

Программа из Примера 4 (стр. 94) выполняет цикл \( \text{for } \text{k}:=5 \text{ to } 10 \text{ do } \dots \) с 6 итерациями, где \( \text{s}:=\text{s}+\text{d} \) и \( \text{d}:=\text{d}*2 \). Начальное значение \( \text{s}=0 \).

Переменная \( \text{s} \) накапливает сумму \( 6 \cdot \text{d}_{\text{нач}} \), так как \( \text{d} \) удваивается после каждого сложения, но используется в сложении еще до его удвоения (в трассировочной таблице видно, что при \( \text{k}=5 \), \( \text{s}=\text{s}+10 \), где \( \text{d}=10 \), и после этого \( \text{d} \) становится \( 20 \)).

Проанализируем цикл, где \( \text{s}_{\text{k}} \) - значение \( \text{s} \) после \( \text{k} \)-й итерации:

\( \text{k} \in [5, 10] \). Цикл выполняется \( 10 - 5 + 1 = 6 \) раз.

Пусть \( \text{d}_0 \) — начальное значение \( \text{d} \). При каждой итерации к \( \text{s} \) прибавляется \( \text{d} \), и затем \( \text{d} \) удваивается.

Итерация 1 (\( \text{k}=5 \)): \( \text{s} = \text{d}_{\text{нач}} \); \( \text{d} = 2 \cdot \text{d}_{\text{нач}} \).

Итерация 2 (\( \text{k}=6 \)): \( \text{s} = \text{d}_{\text{нач}} + 2 \cdot \text{d}_{\text{нач}} \); \( \text{d} = 4 \cdot \text{d}_{\text{нач}} \).

Итерация 3 (\( \text{k}=7 \)): \( \text{s} = \text{d}_{\text{нач}} + 2 \cdot \text{d}_{\text{нач}} + 4 \cdot \text{d}_{\text{нач}} \); \( \text{d} = 8 \cdot \text{d}_{\text{нач}} \).

Итерация 4 (\( \text{k}=8 \)): \( \text{s} = \dots + 8 \cdot \text{d}_{\text{нач}} \); \( \text{d} = 16 \cdot \text{d}_{\text{нач}} \).

Итерация 5 (\( \text{k}=9 \)): \( \text{s} = \dots + 16 \cdot \text{d}_{\text{нач}} \); \( \text{d} = 32 \cdot \text{d}_{\text{нач}} \).

Итерация 6 (\( \text{k}=10 \)): \( \text{s} = \dots + 32 \cdot \text{d}_{\text{нач}} \); \( \text{d} = 64 \cdot \text{d}_{\text{нач}} \).

Конечное значение \( \text{s} \):

\( \text{s} = \text{d}_{\text{нач}} \cdot (1 + 2 + 4 + 8 + 16 + 32) = \text{d}_{\text{нач}} \cdot (2^6 - 1) = 63 \cdot \text{d}_{\text{нач}} \)

Если \( \text{s} = 186 \), то \( 186 = 63 \cdot \text{d}_{\text{нач}} \).

\( \text{d}_{\text{нач}} = \frac{186}{63} \approx 2.95 \).

Поскольку \( \text{d} \) должно быть целым (тип \( \text{integer} \)), то такое значение \( \text{s}=186 \) не может быть получено при целочисленном \( \text{d}_{\text{нач}} \).

Если \(\text{s}=212\):

\( 212 = 63 \cdot \text{d}_{\text{нач}} \).

\( \text{d}_{\text{нач}} = \frac{212}{63} \approx 3.36 \).

Поскольку \( \text{d} \) должно быть целым, то такое значение \( \text{s}=212 \) также не может быть получено при целочисленном \( \text{d}_{\text{нач}} \).

Определите значения переменных \( \text{a} \) и \( \text{b} \), полученные после выполнения следующего фрагмента программы:

Программа:

var a, b: integer;begina:=5;b:=1;while b<=a dobeginb:=b+1;a:=a-1;end;writeln(a);writeln(b);end.

Проведем трассировку (пошаговый анализ):

  1. Начало: \( \text{a}=5 \), \( \text{b}=1 \).
  2. Условие \( \text{b} \le \text{a} \): \( 1 \le 5 \) — Истина.
  3. Цикл 1: \( \text{b} = 1+1=2 \); \( \text{a} = 5-1=4 \).
  4. Условие \( \text{b} \le \text{a} \): \( 2 \le 4 \) — Истина.
  5. Цикл 2: \( \text{b} = 2+1=3 \); \( \text{a} = 4-1=3 \).
  6. Условие \( \text{b} \le \text{a} \): \( 3 \le 3 \) — Истина.
  7. Цикл 3: \( \text{b} = 3+1=4 \); \( \text{a} = 3-1=2 \).
  8. Условие \( \text{b} \le \text{a} \): \( 4 \le 2 \) — Ложь.

Цикл завершается.

Результат: Переменная \( \text{a} \) примет значение \( 2 \), а переменная \( \text{b} \) примет значение \( 4 \). (Совпадает с таблицей на стр. 93)

Определите значение переменной \( \text{n} \), которое будет получено в результате выполнения следующей программы:

Программа:

var s, n: integer;begins:=0; n:=1;while sqr(s+2)<125 dobeginn:=n*2;s:=s+2;end;writeln(n)end.

Проведем трассировку (в цикле \( \text{sqr}(\text{s}+2) \) — это \( (\text{s}+2)^2 \)):
Условие выхода: \( (\text{s}+2)^2 \ge 125 \). Т.к. \( 11^2 = 121 \) и \( 12^2 = 144 \), цикл выполняется до тех пор, пока \( \text{s}+2 < 12 \), т.е. \( \text{s} < 10 \).

  • Начальные: \( \text{s}=0 \), \( \text{n}=1 \).
  • Итерация 1: Условие: \( (0+2)^2 = 4 < 125 \) (Истина). \( \text{n} = 1 \cdot 2 = 2 \); \( \text{s} = 0+2=2 \).
  • Итерация 2: Условие: \( (2+2)^2 = 16 < 125 \) (Истина). \( \text{n} = 2 \cdot 2 = 4 \); \( \text{s} = 2+2=4 \).
  • Итерация 3: Условие: \( (4+2)^2 = 36 < 125 \) (Истина). \( \text{n} = 4 \cdot 2 = 8 \); \( \text{s} = 4+2=6 \).
  • Итерация 4: Условие: \( (6+2)^2 = 64 < 125 \) (Истина). \( \text{n} = 8 \cdot 2 = 16 \); \( \text{s} = 6+2=8 \).
  • Итерация 5: Условие: \( (8+2)^2 = 100 < 125 \) (Истина). \( \text{n} = 16 \cdot 2 = 32 \); \( \text{s} = 8+2=10 \).
  • Итерация 6: Условие: \( (10+2)^2 = 144 < 125 \) (Ложь). Цикл завершен.

Результат: Переменная \( \text{n} \) примет значение \( 32 \).

Определите значение переменной \( \text{s} \), которое будет получено в результате выполнения следующей программы:

Программа (вложенные циклы):

var s, i, j: integer;begins:=0;for i:=1 to 3 do  for j:=1 to 4 do    s:=s+i+j;writeln(s)end.

Внешний цикл \( \text{i} \) выполняется 3 раза (1, 2, 3). Внутренний цикл \( \text{j} \) выполняется 4 раза (1, 2, 3, 4) для каждого значения \( \text{i} \). Всего \( 3 \cdot 4 = 12 \) итераций.

Переменная \( \text{s} \) накапливает сумму \( \sum_{\text{i}=1}^{3} \sum_{\text{j}=1}^{4} (\text{i}+\text{j}) \).

Для каждого \( \text{i} \) считается \( \text{i} \cdot 4 \) (т.к. \( \text{j} \) повторяется 4 раза) плюс сумма \( \text{j} \):

\( \sum_{\text{j}=1}^{4} \text{j} = 1+2+3+4 = 10 \).

Общая сумма:

\( \text{i}=1 \): \( (1+1)+(1+2)+(1+3)+(1+4) = 4 + 10 = 14 \)

\( \text{i}=2 \): \( (2+1)+(2+2)+(2+3)+(2+4) = 8 + 10 = 18 \)

\( \text{i}=3 \): \( (3+1)+(3+2)+(3+3)+(3+4) = 12 + 10 = 22 \)

Итоговое \( \text{s} = 14 + 18 + 22 = 54 \).

Выясните, какое число будет выведено в результате выполнения следующей программы:

Программа:

var n, s: integer;beginn:=0;s:=1000;while s<=100 dobegins:=s-2;n:=n+1;end;write(n)end.

Начальное значение \( \text{s} = 1000 \). Условие цикла \( \text{s} \le 100 \) ложно с самого начала. Следовательно, тело цикла не будет выполнено ни разу.

Результат: Будет выведено начальное значение переменной \( \text{n} \), то есть \( 0 \).

На вход программы подается число \( \text{x} \). Выясните, какие два числа \( \text{m} \) и \( \text{n} \) выведет программа. Также укажите наибольшее и наименьшее из чисел \( \text{x} \), при которых программа выведет числа \( 4 \) и \( 8 \). Определите общее количество таких чисел.

Программа:

var x, m, n: integer;beginreadln(x);m:=0; n:=1;while x>0 dobeginif x mod 10>n then n:=x mod 10;m:=m+1;x:=x div 10;end;writeln(m); write(n);end.

Функции переменных:

  • Переменная \( \text{m} \) (\( \text{m}:=\text{m}+1 \)) подсчитывает количество цифр в числе \( \text{x} \).
  • Переменная \( \text{n} \) (\( \text{if x mod 10 > n then n:=x mod 10} \)) находит максимальную цифру в числе \( \text{x} \) (т.к. \( \text{n} \) инициализировано \( 1 \)).

Если программа выводит 4 и 8:

  • \( \text{m}=4 \): Число \( \text{x} \) должно быть четырехзначным (от 1000 до 9999).
  • \( \text{n}=8 \): Максимальная цифра в числе \( \text{x} \) должна быть \( 8 \).

Наименьшее число \( \text{x} \): Число должно быть четырехзначным и содержать цифру 8. Для наименьшего числа нужно поставить наименьшие возможные цифры в старшие разряды и цифру 8 как можно правее. Наименьшая цифра в 1-м разряде: 1. Остальные минимальные: 0. \(\text{x} = 1008\).

Наибольшее число \( \text{x} \): Число должно быть четырехзначным и содержать цифру 8. Для наибольшего числа нужно поставить наибольшие возможные цифры в старшие разряды (не более 8, т.к. 9 больше 8). Наибольшие цифры: 8. \(\text{x} = 8888\).

Количество чисел \( \text{x} \):

Общее количество четырехзначных чисел \( (9000) \) минус количество четырехзначных чисел, в которых максимальная цифра меньше \( 8 \) (т.е. максимальная цифра \( \le 7 \)).

  • Общее количество 4-значных чисел: \( 9000 \).
  • Количество 4-значных чисел, составленных только из цифр \( \{1, \dots, 7\} \): \( 7 \cdot 8 \cdot 8 \cdot 8 = 3584 \) (Первая цифра не 0).
  • Количество 4-значных чисел, составленных только из цифр \( \{1, \dots, 8\} \): \( 8 \cdot 9 \cdot 9 \cdot 9 = 5832 \).
  • Количество 4-значных чисел, в которых максимальная цифра \( \le 7 \): \( (7 \cdot 8^3) - 0 = 3584 \).
  • Количество 4-значных чисел, в которых максимальная цифра \( \le 8 \): \( (8 \cdot 9^3) - 0 = 5832 \).

Количество чисел с максимальной цифрой, равной 8: (Числа с максимальной \( \le 8 \)) - (Числа с максимальной \( \le 7 \))

\( 5832 - 3584 = 2248 \).

Всего существует 2248 таких чисел \( \text{x} \).

Напишите программу, которая выводит на экран все чётные трёхзначные числа.

Программа на Pascal:

var i: integer;begin  for i:=100 to 998 do  begin    if i mod 2 = 0 then      writeln(i);  end;end.
Напишите программу, которая подсчитывает сумму квадратов всех чисел от \( 1 \) до \( \text{n} \).

Программа на Pascal:

var n, i: integer;  sum_sqr: longint; // longint для предотвращения переполненияbegin  write('Введите натуральное число n: ');  readln(n);  sum_sqr := 0;  for i:=1 to n do  begin    sum_sqr := sum_sqr + sqr(i);  end;  writeln('Сумма квадратов: ', sum_sqr);end.
Разработайте программу, позволяющую определить, входит ли заданная цифра в некоторое целое неотрицательное число.

Программа на Pascal:

var number, digit, current_digit: integer;  found: boolean;begin  write('Введите неотрицательное число: ');  readln(number);  write('Введите искомую цифру (0-9): ');  readln(digit);  found := false;  if number = 0 then // Обработка случая 0    if digit = 0 then found := true;  while number > 0 do  begin    current_digit := number mod 10;    if current_digit = digit then    begin      found := true;      break; // Оптимизация: прекращаем поиск    end;    number := number div 10;  end;  if found then    writeln('Цифра входит в число.')  else    writeln('Цифра не входит в число.');end.
Разработайте программу для перевода десятичного натурального числа \( \text{n} \) в троичную систему счисления.

Программа на Pascal:

var n: integer;  nd: string;begin  write('Введите натуральное число n: ');  readln(n);  nd := '';  if n = 0 then // Обработка случая 0    nd := '0';  else  begin    while n > 0 do    begin      // Остаток от деления на 3 - следующая троичная цифра      // Добавляем цифру в начало строки (конкатенация)      nd := chr(ord('0') + (n mod 3)) + nd;      n := n div 3;    end;  end;  writeln('Число в троичной системе: ', nd);end.
Разработайте программу, которая выводит сообщение «Да», если точка с координатами \( (\text{x}, \text{y}) \) принадлежит закрашенной области, и «Нет» в противном случае. Рассмотрите оба представленных графических случая .

Случай 1 (Квадрат):

Закрашенная область — квадрат с центром в начале координат и вершинами \( (\pm 3, \pm 3) \). Условие принадлежности: \( -3 \le \text{x} \le 3 \) и \( -3 \le \text{y} \le 3 \).

// Случай 1: Квадратif (x >= -3) and (x <= 3) and (y >= -3) and (y <= 3) then  writeln('Да')else  writeln('Нет');

Случай 2 (Кольцо):

Закрашенная область — кольцо между двумя окружностями с центром в начале координат. Внутренний радиус \( r_1 = 2 \), внешний радиус \( r_2 = 3 \). Условие принадлежности: \( r_1^2 \le \text{x}^2 + \text{y}^2 \le r_2^2 \), то есть \( 4 \le \text{x}^2 + \text{y}^2 \le 9 \).

// Случай 2: Кольцоif (sqr(x) + sqr(y) >= 4) and (sqr(x) + sqr(y) <= 9) then  writeln('Да')else  writeln('Нет');

Объединенная программа:

var x, y: real;  choice: integer;begin  write('Введите координаты точки x и y: ');  readln(x, y);  write('Выберите область (1 - Квадрат, 2 - Кольцо): ');  readln(choice);  if choice = 1 then // Квадрат    if (x >= -3) and (x <= 3) and (y >= -3) and (y <= 3) then      writeln('Да')    else      writeln('Нет')  else if choice = 2 then // Кольцо    if (sqr(x) + sqr(y) >= 4) and (sqr(x) + sqr(y) <= 9) then      writeln('Да')    else      writeln('Нет')  else    writeln('Неверный выбор области');end.
Кодовый замок имеет двузначный шифр. Буратино забыл код, но помнит, что сумма цифр этого числа, сложенная с их произведением, равна самому числу. Напишите все возможные варианты кода, чтобы Буратино смог быстрее открыть замок. Решите задачу методом перебора.

Пусть искомое двузначное число \( \text{N} \) имеет цифры \( \text{a} \) (десятки) и \( \text{b} \) (единицы). Тогда \( \text{N} = 10 \cdot \text{a} + \text{b} \), где \( \text{a} \in [1, 9] \) и \( \text{b} \in [0, 9] \).

Условие: (Сумма цифр) + (Произведение цифр) = (Само число).

Математическое выражение условия:

\( (\text{a} + \text{b}) + (\text{a} \cdot \text{b}) = 10 \cdot \text{a} + \text{b} \)

Упрощаем уравнение:

\( \text{a} + \text{b} + \text{a} \cdot \text{b} = 10 \cdot \text{a} + \text{b} \)

\( \text{a} \cdot \text{b} = 10 \cdot \text{a} - \text{a} \)

\( \text{a} \cdot \text{b} = 9 \cdot \text{a} \)

Так как \( \text{a} \in [1, 9] \) (не равно 0), можем разделить обе части на \( \text{a} \):

\( \text{b} = 9 \)

Единственное возможное значение для цифры единиц \( \text{b} \) — это \( 9 \). Цифра десятков \( \text{a} \) может быть любой от 1 до 9.

Возможные варианты кода: \( 19, 29, 39, 49, 59, 69, 79, 89, 99 \). (Всего 9 вариантов).

Программа для перебора (для демонстрации метода):

var a, b, number: integer;begin  writeln('Возможные варианты кода:');  for a:=1 to 9 do // Цифра десятков    for b:=0 to 9 do // Цифра единиц    begin      number := 10*a + b;      if (a + b + a*b) = number then        writeln(number);    end;end.

Задали создать проект?

Создай с помощью ИИ за 5 минут

До 90% уникальность
Готовый файл Word
15-30 страниц
Список источников по ГОСТ
Оформление по ГОСТ
Таблицы и схемы

Готовые проекты

Список готовых проектов к текущему параграфу.

Уведомление об авторском праве и цитировании

ВНИМАНИЕ: Представленные фрагменты из учебных материалов используются исключительно в научно-образовательных целях в объеме, оправданном поставленной целью.

Данное использование осуществляется в рамках, установленных законодательством об авторском праве (в частности, нормами о свободном использовании произведения для образовательных целей).

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