Детальное решение задачи
Что нужно сделать
- Для каждой записи (имя, фамилия, оценка) нужно вывести фразу: "{Имя} {Фамилия} получила/получил {Оценка}.".
- Правило выбора формы глагола:
- если имя — Соня или Маша, то это девочка, значит использовать "получила";
- иначе — использовать мужскую форму "получил".
- Порядок слов в выходной строке такой же: имя, фамилия, глагол, оценка, точка в конце.
- Параметр "Предмет" и "Класс" здесь не учитываются; используем общий подход для средней школы.
Пошаговый алгоритм
- Прочитать n — количество записей.
- Повторить n раз:
- считать три слова: имя, фамилия, оценка.
- проверить: имя равно "Соня" или "Маша" → female = true, иначе false.
- выбрать глагол: если female — "получила", иначе — "получил".
- вывести строку: "{имя} {фамилия} {глагол} {оценка}.".
- Повторить для всех записей.
Сложность
- Время: O(n), по количеству записей.
- Память: O(1) кроме вывода (если считать вывод по строкам — O(n) на всякую строку).
Пример Вход: 3 Соня Иванова пять Иван Петров четыре Маша Смирнов пять
Выход: Соня Иванова получила пять. Иван Петров получил четыре. Маша Смирнов получила пять.
Код на Python (упрощённый, читается из последовательных слов: имя, фамилия, оценка за каждую запись)
import sys
def solve():
data = sys.stdin.read().strip().split()
if not data:
return
n = int(data[0])
idx = 1
out_lines = []
for _ in range(n):
if idx + 2 >= len(data):
break
name = data[idx]
surname = data[idx + 1]
grade = data[idx + 2]
idx += 3
female = (name == "Соня" or name == "Маша")
verb = "получила" if female else "получил"
out_lines.append(f"{name} {surname} {verb} {grade}.")
print("\n".join(out_lines))
if __name__ == "__main__":
solve()
Если хочешь, могу адаптировать решение под другой язык программирования или под конкретный формат ввода/вывода.