Задача 1
Ира пишет записки одноклассникам. Если сообщение очень важное, после каждой строки она ставит восклицательный знак.
Есть последовательность строк из записки Иры и строка "стоп". Выведи эти строки (кроме "стоп"), добавив восклицательный знак после каждой.
Ввод Вывод
а
стоп а!
привет
сегодня
хороший
день
стоп привет!
сегодня!
хороший!
день!
Давайте подробно разберем задачу и решим ее шаг за шагом.
**Условие задачи:**
- Есть последовательность строк, которые пишет Ира.
- В конце каждого важного сообщения она ставит восклицательный знак после каждой строки.
- Вводится последовательность строк, завершающаяся строкой "стоп".
- Нужно вывести все строки, кроме "стоп", добавляя восклицательный знак после каждой строки.
- Также, если строка "стоп" встретилась, то необходимо вывести все строки, прочитанные до этого момента, причем для строк, которые шли после "стоп", — вывести их с восклицательными знаками, если они были важными (после "стоп" все строки считаются важными).
Проведем пример по условию:
**Пример входных данных:**
```
а
стоп
а!
привет
сегодня
хороший
день
стоп
привет!
сегодня!
хороший!
день!
```
**Что нужно сделать:**
1. Читать строки по одной.
2. Как только встречается строка "стоп", выводить все ранее прочитанные строки без изменений, а далее — все строки после "стоп" необходимо выводить с восклицательным знаком.
**Пошаговое решение:**
1. Создаем список для хранения строк до "стоп".
2. Когда встречается "стоп", выводим все строки из этого списка без изменений, затем очищаем его, чтобы собирать новые строки.
3. Далее, для строк после "стоп", необходимо выводить их с восклицательным знаком.
4. Продолжаем пока не достигнем конца ввода.
---
### Реализация на Python:
```python
# Инициализация списков
initial_lines = [] # для строк до первого "стоп"
post_stop = False # флаг, указывающий, что мы уже встретили "стоп"
while True:
line = input().strip()
if line == "стоп":
# Когда встречаем "стоп"
# Выводим все строки, что были до этого
for prev_line in initial_lines:
print(prev_line)
# Убираем необходимость сохранять эти строки, так как они уже выведены
initial_lines = []
# Устанавливаем флаг, что запомнили "стоп"
post_stop = True
continue
if line == "":
# Можно добавить условие для завершения или обработать при необходимости
break
if not post_stop:
# До "стоп" собираем строки
initial_lines.append(line)
else:
# После "стоп" - выводим строки с восклицательным знаком
print(line + "!")
```
### Объяснение кода:
- Перед началом чтения — создаем список `initial_lines` и флаг `post_stop`.
- В цикле читаем строки:
- Если строка `"стоп"`, выводим все накопленные до этого строки и устанавливаем флаг `post_stop = True`, чтобы после этого добавлять восклицательный знак.
- Если строка не `"стоп"` и `post_stop` — `False`, то просто сохраняем ее.
- Если `post_stop` — `True`, то выводим строку с восклицательным знаком.
---
Готово! Если нужно, я могу помочь с более сложной версией или подсказать, как реализовать это решение в другом языке программирования.