15.1 На бесконечном поле имеются две перпендикулярные друг другу
стены, расположенные в виде буквы «Т», длины стен неизвестны.
Робот находится в клетке, расположенной непосредственно над
горизонтальной стеной. На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р»).
Напишите для Робота алгоритм, закрашивающий все клетки,
расположенные непосредственно с правой стороны вертикальной
стены. Робот должен закрасить только клетки, удовлетворяющие
данному условию. Например, для приведённого справа рисунка Робот
должен закрасить следующие клетки (см. рисунок).
При исполнении алгоритма Робот не должен разрушиться, выполнение
алгоритма должно завершиться. Конечное расположение Робота может
быть произвольным. Алгоритм должен решать задачу для любого
допустимого расположения стен и любого расположения и размера
прохода внутри стены. Алгоритм может быть выполнен в среде
формального исполнителя или записан в текстовом редакторе.
15.2 Напишите программу, которая в последовательности натуральных чисел определяет сумму всех
чисел, кратных 3 и оканчивающихся на 9. Программа получает на вход натуральные числа, количество
введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания
ввода, не входит в последовательность). Количество чисел не превышает 100. Введённые числа не
превышают 300. Программа должна вывести одно число: сумму всех чисел, кратных 3 и
оканчивающихся на 9.
Пример работы программы:
Входные данные Выходные данные
16
29
56
9
39
0
48
15.1 Для того чтобы решить данную задачу, Роботу нужно двигаться вправо и смотреть вниз, чтобы проверить, есть ли стена в следующей клетке. Если в следующей клетке есть стена, Робот ее обходит справа и продолжает двигаться вправо. Если стены в следующей клетке нет, Робот закрашивает текущую клетку и двигается вправо до тех пор, пока не достигнет стены.
Вот подробный алгоритм:
1. Проверяем, есть ли стена в следующей клетке:
1.1 Если есть, двигаемся вправо, обходим стену справа, иначе переходим к следующему шагу.
1.2 Если двигаемся вниз, чтобы проверить, есть ли стена в следующей клетке:
- Если есть стена, то завершаем алгоритм, иначе переходим к следующему шагу.
2. Закрашиваем текущую клетку.
3. Двигаемся вправо.
4. Проверяем условие, что Робот не достиг стены:
- Если достигли стены, то завершаем алгоритм, иначе переходим к следующему шагу.
5. Возвращаемся к шагу 1.
Таким образом, Робот будет двигаться вправо, закрашивая клетки непосредственно справа от вертикальной стены до ее конца.
15.2 Для того чтобы решить данную задачу, нужно последовательно вводить числа с клавиатуры. При каждом вводе числа проверяем, оканчивается ли оно на 9 и кратно ли оно 3. Если условие выполняется, то добавляем это число к общей сумме чисел. Вводим числа до тех пор, пока не будет введено число 0 (признак окончания ввода). После того, как было введено число 0, выводим общую сумму чисел.
Вот подробная программа на Python, решающая данную задачу:
```python
sum = 0
number = int(input("Введите число: ")) # Первое введенное число
while number != 0:
if number % 10 == 9 and number % 3 == 0:
sum += number
number = int(input("Введите число: ")) # Следующее введенное число
print("Сумма чисел, кратных 3 и оканчивающихся на 9:", sum)
```
Таким образом, программа последовательно считывает числа и проверяет условие, после чего добавляет число к общей сумме, если условие выполняется. После ввода числа 0 программа выводит общую сумму чисел, удовлетворяющих условию.