Количество длинных фамилий
Criado em: 27 de janeiro de 2025
Criado em: 27 de janeiro de 2025
(сколько самых длинных слов) Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Выведи количество фамилий наибольшей длины.
Ниже приводится общий алгоритм решения задачи (без привязки к конкретному языку программирования), а затем пример кода на Python.
Инициализировать две переменные:
max_length = 0
– для хранения текущей максимальной длины фамилии;count_max = 0
– для подсчёта количества фамилий максимальной длины.Считывать фамилии по одной до тех пор, пока не встретится слово СТОП (именно в таком написании).
Для каждой считанной фамилии (назовём её f
):
current_length = len(f)
.current_length
с max_length
:
current_length > max_length
:
max_length = current_length
;count_max = 1
, так как нашли новую максимальную длину.current_length == max_length
:
count_max += 1
.current_length < max_length
, ничего не менять.Когда встретится слово СТОП, прекратить чтение фамилий.
Вывести значение count_max
– это количество фамилий, имеющих максимальную длину.
pythondef main(): max_length = 0 count_max = 0 while True: # Считываем фамилию (строку) f = input().strip() # Проверяем условие окончания ввода if f == "СТОП": break current_length = len(f) if current_length > max_length: max_length = current_length count_max = 1 elif current_length == max_length: count_max += 1 # Выводим результат print(count_max) if __name__ == "__main__": main()
Как работает этот код?
max_length
и count_max
мы храним соответственно текущую максимальную длину фамилии и количество фамилий такой максимальной длины.max_length
.count_max
.Таким образом, программа (или алгоритм) в конце печатает количество самых длинных фамилий из всего списка, который был введён до слова «СТОП».
Задача 1 (количество слов)
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Выведи количество фамилий в последовательности.
Ввод Вывод
Иванов
Петрова
Сидорова 3
Ниже приводится общий алгоритм решения, а затем пример кода на Python.
count = 0
.count
на 1.count
.pythondef main(): count = 0 while True: fam = input().strip() # Считываем очередную фамилию if fam == "СТОП": # Проверяем условие завершения break else: count += 1 # Увеличиваем счётчик, если это не "СТОП" print(count) # Выводим итоговое количество if __name__ == "__main__": main()
Как работает этот код?
count
.count
количество фамилий.Задача 3 (сколько самых длинных слов)
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП.
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП.
Выведи количество фамилий наибольшей длины.
Ввод Вывод
Иванов
Петрова
Сидорова 1
Ли
Ли
Ли 3
Ниже приведён алгоритм и пример кода на Python, который решает задачу «сколько самых длинных слов (фамилий)» в последовательности, оканчивающейся словом СТОП. Пример проверен на двух тестах, о которых вы упомянули (Иванов, Петрова, Сидорова и Ли, Ли, Ли).
Инициализация:
max_length = 0
, которая будет хранить текущую максимальную длину среди введённых фамилий.count_max = 0
, которая будет считать количество фамилий, соответствующих текущей максимальной длине.Чтение фамилий:
Обновление данных о максимальной длине:
current_length = len(fam)
.current_length
с max_length
:
current_length > max_length
, значит встретили фамилию большей длины, чем все предыдущие:
max_length = current_length
.count_max = 1
(так как это первая фамилия новой максимальной длины).current_length == max_length
, значит встретили ещё одну фамилию, у которой длина совпадает с уже известной максимальной:
count_max += 1
).current_length < max_length
, ничего не меняем.Вывод результата:
count_max
.pythondef main(): max_length = 0 count_max = 0 while True: fam = input().strip() # Считываем фамилию if fam == "СТОП": # Проверяем условие завершения break current_length = len(fam) if current_length > max_length: max_length = current_length count_max = 1 # Сбрасываем счётчик, т.к. нашли новую максимальную длину elif current_length == max_length: count_max += 1 # Увеличиваем счётчик, т.к. длина совпала с максимальной print(count_max) # Выводим искомое количество if __name__ == "__main__": main()
Тест №1
Ввод:
textИванов Петрова Сидорова СТОП
1
Тест №2
Ввод:
textЛи Ли Ли СТОП
3
Таким образом, алгоритм корректно обрабатывает обе последовательности.
Задача 1 (количество слов)
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Выведи количество фамилий в последовательности.
Ввод Вывод
Иванов
Петрова
Сидорова 3
Ниже приведён пошаговый алгоритм решения и пример на Python.
count = 0
.count
на 1.count
.pythondef main(): count = 0 while True: fam = input().strip() if fam == "СТОП": # Если встретили "СТОП", завершаем ввод break else: count += 1 # Увеличиваем счётчик на каждую фамилию print(count) if __name__ == "__main__": main()
count
мы храним общее число фамилий, введённых до слова «СТОП».Задача 3 (сколько самых длинных слов)
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП.
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП.
Выведи количество фамилий наибольшей длины.
Ввод Вывод
Иванов
Петрова
Сидорова 1
Ли
Ли
Ли 3
Ответ должен быть одним целым числом
Ниже приведён короткий алгоритм и пример решения на Python, который находит количество самых длинных фамилий в последовательности, оканчивающейся словом «СТОП». Программа выводит одно целое число – искомое количество.
max_length = 0
– максимальная длина, обнаруженная среди фамилий.count_max = 0
– количество фамилий, которые имеют эту максимальную длину.max_length
, обновить max_length
и сбросить count_max
в 1.max_length
, увеличить count_max
на 1.count_max
.pythondef main(): max_length = 0 count_max = 0 while True: fam = input().strip() if fam == "СТОП": break length = len(fam) if length > max_length: max_length = length count_max = 1 elif length == max_length: count_max += 1 print(count_max) # одно целое число if __name__ == "__main__": main()
Ввод:
textИванов Петрова Сидорова СТОП
Вывод: 1
(так как «Сидорова» — самая длинная, длина 8, таких фамилий ровно одна)
Ввод:
textЛи Ли Ли СТОП
Вывод: 3
(все фамилии одной длины 2, значит все три фамилии самые длинные)
При любом другом наборе фамилий, программа аналогичным образом найдёт количество самых длинных и выведет одно целое число.
Есть последовательность фамилий учеников. Последовательность заканчивается словом СТОП. Выведи количество фамилий в последовательности.
Ввод Вывод
Иванов
Петрова
Сидорова 3
Ниже приведён простой алгоритм и пример реализации на Python, который считает количество фамилий (строк) до тех пор, пока не встретит слово «СТОП».
count = 0
.count
на 1.count
.pythondef main(): count = 0 while True: fam = input().strip() if fam == "СТОП": break count += 1 print(count) if __name__ == "__main__": main()
Как это работает?