Домашние задания: Информатика

Исполнитель Алгоритмов Чертёжник.

Исполнитель Чертёжник умеет передвигать перо по линиям сетки. Перо может быть прижато к рабочему полю или поднято над ним. Прижатое перо во время движения оставляет за собой след - отрезок или ломаную линию.

Начальное состояние: перо поднято и находится над левой нижней точкой поля.

Система команд Чертёжника

Имя команды Краткая запись Направление движения пера
ВВЕРХ В вверх
ВНИЗ Н вниз
ВПРАВО П вправо
ВЛЕВО Л влево
ПОДНЯТЬ ПЕРО Д не передвигая
ОПУСТИТЬ ПЕРО О не передвигая
Направление движения пера определяется именем команды. После имени команды в скобках записывается расстояние, на которое передвигается перо. Расстояние может быть задано числом либо переменной, которой раньше присвоили значение.

Если нужно передвинуть перо на 5 клеток влево, команды можно записать двумя способами:

ВЛЕВО (5) или

k:=5

ВЛЕВО (k)

Команду, которая, кроме имени, содержит дополнительные характеристики, будем называть командой с параметрами.

Параметр может быть задан числом либо переменной.

Объект Чертёжник имеет свойство с именем ЦВЕТ. Оно определяет цвет линии, которую рисует Чертёжник. Это свойство может принимать значения: красный, синий, зелёный, жёлтый, голубой, лиловый, чёрный, белый.

Чтобы изменить цвет линий, нужно присвоить значение свойству ЦВЕТ, например:

ЧЕРТЁЖНИК.ЦВЕТ:=КРАСНЫЙ

До выполнения команды присваивания линии будут чёрными.
Ну прочитал я СКИ Чертежник. А прикол-то в чем? Что нужно нарисовать при помощи Чертежника???
ОП
Ольга Пилипчук
73 229
Лучший ответ
Для выполнения задания нужно написать программу, которая будет обрабатывать последовательность команд Чертёжника и выводить на экран сетку с линиями, нарисованными по этим командам.

Пример входных данных:

ВВЕРХ (5)
ВПРАВО (3)
ОПУСТИТЬ ПЕРО
ВПРАВО (5)
ВНИЗ (2)
ВЛЕВО (2)
ВВЕРХ (3)
ПОДНЯТЬ ПЕРО

Пример выходных данных:

Как работает программа:

Создаем переменные x и y для хранения текущей позиции пера на сетке. Начальное значение - левый нижний угол.

Создаем переменную color для хранения текущего цвета линии. Начальное значение - чёрный.

Создаем двумерный массив grid для хранения состояния сетки. Начальное значение - пустая сетка.

Читаем команды из входных данных.

Обрабатываем каждую команду в цикле:

5.1. Если команда - ВВЕРХ, уменьшаем y на указанное расстояние (или на 1, если расстояние не указано).

5.2. Если команда - ВНИЗ, увеличиваем y на указанное расстояние (или на 1, если расстояние не указано).

5.3. Если команда - ВПРАВО, увеличиваем x на указанное расстояние (или на 1, если расстояние не указано).

5.4. Если команда - ВЛЕВО, уменьшаем x на указанное расстояние (или на 1, если расстояние не указано).

5.5. Если команда - ПОДНЯТЬ ПЕРО, изменяем значение переменной is_pen_down на False.

5.6. Если команда - ОПУСТИТЬ ПЕРО, изменяем значение переменной is_pen_down на True.

5.7. Если команда - присваивание переменной, изменяем значение соответствующей переменной.

5.8. Иначе - ошибка, неизвестная команда.

5.9. Если перо опущено, рисуем линию на сетке между текущей позицией и новой позицией, используя текущий цвет линии.

Печатаем сетку на экран.

Пример:

Изначально, перо Чертежника находится над левой нижней точкой поля. Ширина поля равна 5, высота поля равна 3. Команды выполняются в следующем порядке:

ВПРАВО (4) – перо перемещается вправо на 4 клетки

ВНИЗ (2) – перо перемещается вниз на 2 клетки

ВЛЕВО (1) – перо перемещается влево на 1 клетку

ПОДНЯТЬ ПЕРО – перо поднимается

ВЛЕВО (2) – перо перемещается влево на 2 клетки, не оставляя следа

ОПУСТИТЬ ПЕРО – перо опускается

ВПРАВО (2) – перо перемещается вправо на 2 клетки

ВВЕРХ (1) – перо перемещается вверх на 1 клетку

ВЫХОД – программа завершается

В результате выполнения этих команд на поле будет изображен следующий рисунок:

.#....
..###.
...#..

где символ '#' обозначает след, оставленный пером, а точка '.' - незаполненную клетку.

Задание:

Напишите программу, которая симулирует работу Чертежника в соответствии с указанными выше правилами. Программа должна считывать последовательность команд, выполнять их и выводить на экран поле с текущим рисунком.

Входные данные:

В первой строке входного файла записано два целых числа W и H (1 ≤ W, H ≤ 100) – ширина и высота поля.

В следующей строке записана строка C, содержащая одно слово – начальный цвет линий (черный, белый, красный, синий, зеленый, желтый, голубой, фиолетовый).

Далее следуют команды в том же формате, в котором они были описаны выше.

Выходные данные:

Для каждой команды "ОПУСТИТЬ ПЕРО" программа должна выводить на экран текущее состояние поля. Разрешается выводить дополнительные пробелы перед символами в каждой строке рисунка.
NK
Nurik Kumarbek
2 159