Задача понятна. Нужно посчитать количество фамилий до слова STOP. Ниже приведено детальное решение и рабочий код на Python (подходит для средней школы).
Как работает решение (пошагово):
- Считываем входные данные (все, что ввели пользователи, включая пробелы и перевод строки).
- Разделяем на отдельные слова (tokens) по пробелам/переводам строки.
- Проходим по токенам по порядку и считаем, пока не встретится слово STOP (регистр не важен; сравниваем в верхнем регистре).
- Как только встречаем STOP, прекращаем считать и выводим итог.
- Если STOP не встретится вообще, выводится количество всех введённых слов.
Сложность: On по количеству введённых слов, память O(n) для хранения токенов (можно сделать с меньшей памятью, если читать потоками, но для школьной задачи такой подход обычен).
Пример: Ввод: Иванов Петрова Сидорова СТОП Вывод: 3
Код (Python):
import sys
def count_names_before_stop():
# Считываем всё входное содержимое
data = sys.stdin.read().split()
count = 0
for token in data:
if token.upper() == 'СТОП':
break
count += 1
print(count)
if __name__ == "__main__":
count_names_before_stop()
Как запустить:
- Поместите этот скрипт в файл, например, count_before_stop.py.
- Запустите: python count_before_stop.py
- Введите последовательность фамилий и слово СТОП (оно может быть на любой строке/переносе). Например: Иванов Петрова Сидорова СТОП Программа выведет: 3
Дополнительно:
- Если в вводе нет слова СТОП, программа выведет количество введённых слов.
- Для повышения надёжности можно обрабатывать различные регистры и возможные лишние пробелы, как в примере выше (используется token.upper()).
Если нужен аналог на другом языке (например, JavaScript/Node.js или Java), скажи — добавлю вариант.