Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- использовать Робот
- алг
- нач
- цел а, б, высота, ширина
- лит направление
- а:= дойти_до_стены("вверх")
- б:= дойти_до_стены("влево")
- вывод "Введите высота прямоугольника" ;
- ввод высота
- вывод "Введите шрину прямоугольника" ;
- ввод ширина
- закрасить_прямоугольник (ширина, высота)
- кон
- алг закрасить_прямоугольник (арг цел ширина, арг цел высота)
- дано ширина > 0 и высота > 0
- | роьот в левом верхнем углу прямоугольника; высота и ширшна прямоугольника
- надо
- | прямоугольник закрашен польностью или частично; робот в правом нижнем уголу
- |прямоугольника
- нач
- цел а, б, i, в, х
- лит направление
- вывод "Введите позицию вправо" ;
- ввод в
- вывод "Введите позицию вниз" ;
- ввод х
- цел к
- к:=высота
- цел к1
- к1:=ширина
- если высота > 0 и ширина > 0
- то
- идти_кол_во_шагов("вправо", в)
- идти_кол_во_шагов("вниз", х)
- нц для i от 1 до высота шаг 1
- если к >0 и к1 >0
- то
- направление:= "вниз"
- закрасить_ряд(направление, к)
- сменить_на_противоположное_90(направление)
- закрасить_ряд(направление, к1)
- сменить_на_противоположное_90(направление)
- закрасить_ряд(направление, к)
- сменить_на_противоположное_90(направление)
- закрасить_ряд(направление, к1 -1)
- перейти_на_клетку ("вниз")
- к := к -2
- к1 := к1 -2
- все
- кц
- все
- кон
- |Дойти до стены в заданном направлении
- алг цел дойти_до_стены(арг лит направление)
- | робот в произвольной клетке, направление перемещения
- дано направление = "вверх" или направление ="вниз" или направление = "влево" или направление = "вправо"
- | робот рядом со стеной в указанном направлении; кол-во пройденных шагов
- надо стена_рядом(направление)
- нач
- знач := 0
- нц пока не стена_рядом(направление)
- перейти_на_клетку(направление)
- знач := знач + 1
- кц
- кон
- |Определить, имеется ли рядом стена в заданном направлении
- алг лог стена_рядом(арг лит направление)
- | робот в произвольной клетке, направление поиска стены
- дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
- надо | признак наличия стены в заданном направлении
- нач
- выбор
- при направление = "влево": знач := слева стена
- при направление = "вправо": знач := справа стена
- при направление = "вверх": знач := сверху стена
- при направление = "вниз": знач := снизу стена
- все
- кон
- |Перейти на клетку в заданном направлении. Считается, что стены не мешают роботу передвигаться
- алг перейти_на_клетку(арг лит направление)
- | робот в произвольной клетке; известно направление перемещения;
- | предполагается, что стены не мешают роботу перемещаться
- дано направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо"
- надо | робот в позиции, отстоящей от исходной на одну клетку в заданном направлении
- нач
- выбор
- при направление = "влево": влево
- при направление = "вправо": вправо
- при направление = "вверх": вверх
- при направление = "вниз": вниз
- все
- кон
- алг сменить_на_противоположное_90(аргрез лит направление)
- дано направление = "влево" или направление = "вправо" или направление = "вниз" или направление = "вверх"
- надо |противоположное направление
- нач
- выбор
- при направление = "влево": направление := "вниз"
- при направление = "вправо": направление := "вверх"
- при направление = "вверх": направление := "влево"
- при направление = "вниз": направление := "вправо"
- все
- кон
- |Закрасить ряд в заданном направлени и заданной длины
- алг закрасить_ряд(лит направление, цел длина)
- | робот на краю ряда; длина и направление закраски ряда
- дано длина >= 0 и (направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо")
- надо | закрашенный ряд; робот на другом краю ряда
- нач
- закрасить
- нц длина-1 раз
- | Переходим на следующую клетку
- перейти_на_клетку(направление)
- закрасить
- кц
- кон
- алг идти_кол_во_шагов(лит направление, цел кол_во_шагов)
- |робот в произвольной позиции, известно направление движения и кол-во шагов;
- |стены не мешают роботу передвигаться
- дано кол_во_шагов >= 0 и (направление = "вверх" или направление = "вниз" или направление = "влево" или направление = "вправо")
- надо |робот в позиции, удаленной от исходной на заданное кол-во шагов
- нач
- нц кол_во_шагов раз
- | Переходим на следующую клетку
- перейти_на_клетку(направление)
- кц
- кон
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement