Top.Mail.Ru
Ответы
Аватар пользователя
3 месяца назад
от

Помогите с домашней работой по информатике

напишите код для КуМир. Ветвления. Проведите робота в клетку "Б" Используйте цикл n раз и конструкцию если-то-все

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Мудрец
3мес
1234567891011121314151617181920212223
 использовать Робот 
алг   
нач 
 
нц 8 раз 
вправо 
закрасить 
 
нц 2 раз 
если снизу свободно 
то вниз 
   закрасить 
все 
кц 
 
нц 2 раз 
если сверху свободно 
то вверх   
все 
кц 
 
кц 
кон 
Аватар пользователя
3мес

К сожалению, я не могу предоставить код для КуМир, который точно будет работать в вашей среде, так как не знаю, как выглядит ваша конкретная обстановка с роботом. Однако, я могу предоставить примерный код, который нужно будет адаптировать к вашим условиям.

Предположим, что клетка “Б” находится справа от робота. Тогда вот пример кода, использующего цикл и конструкцию “если-то-все”:

алг
нач
цел n
вывод "Введите количество шагов, которое должен сделать робот:"
ввод n

нц для i от 1 до n
если стена справа то
вывод "Справа стена! Останавливаюсь."
выход // Прерываем цикл, если есть стена
иначе
вправо
все
кц

вывод "Цикл завершен."
кон

кумир
Пояснения к коду:

алг и нач / кон: Обозначают начало и конец алгоритма.
цел n: Объявляем целочисленную переменную n для хранения количества шагов.
вывод "Введите количество шагов, которое должен сделать робот:": Выводим сообщение на экран, чтобы пользователь знал, что нужно ввести.
ввод n: Считываем введенное пользователем число и сохраняем его в переменной n.
нц для i от 1 до n / кц: Это цикл, который будет повторяться n раз. i - переменная-счетчик, которая изменяется от 1 до n.
если стена справа то ... иначе ... все: Это условная конструкция.
если стена справа то: Проверяет, есть ли стена справа от робота.
вывод "Справа стена! Останавливаюсь.": Если стена есть, выводится сообщение.
выход: Прерывает выполнение цикла. Это важно, чтобы робот не пытался пройти сквозь стену и не возникло ошибки.
иначе: Если стены справа нет, выполняются команды, указанные после иначе.
вправо: Робот перемещается вправо.
все: Конец условной конструкции.
вывод "Цикл завершен.": Выводится сообщение после завершения цикла (либо нормального завершения, либо после прерывания командой выход).
Что нужно сделать, чтобы адаптировать код к вашей ситуации:

Определите, где находится клетка “Б” относительно робота: Справа, слева, спереди, сзади? В зависимости от этого, измените команду вправо на влево, вперед, назад.
Определите, нужно ли роботу обходить какие-то препятствия: Если на пути к клетке “Б” есть стены или другие препятствия, вам нужно будет добавить в код дополнительные условия если и команды для обхода этих препятствий (например, повернуть, пройти вперед, снова повернуть).
Протестируйте код в вашей среде КуМир: Запустите программу и посмотрите, как робот себя ведет. Возможно, вам придется изменить количество шагов, условия проверки стен или добавить новые команды.
Пример сложной ситуации (клетка “Б” находится справа, но перед ней стена):

алг
нач
цел n
вывод "Введите количество шагов, которое должен сделать робот:"
ввод n

нц для i от 1 до n
если стена справа то
если стена впереди то
вывод "Справа и спереди стена! Не могу двигаться."
выход
иначе
вперед // Если стена только справа, идем вперед, чтобы обойти ее
все
иначе
вправо // Если справа нет стены, идем вправо
все
кц

вывод "Цикл завершен."
кон

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

Аватар пользователя
Мыслитель
3мес

использовать Робот

алг закрасить_область
нач
закрасить
нц пока справа свободно
вправо
закрасить
кц

нц пока вниз свободно
вниз
закрасить
кц

нц пока слева свободно
влево
закрасить
кц

нц пока вверх свободно
вверх
закрасить
кц

вернуться_на_начальную_позицию()
кон

алг вернуться_на_начальную_позицию
нач
нц пока не на начальной позиции
если сверху свободно тогда
вверх
иначе если слева свободно тогда
влево
иначе если справа свободно тогда
вправо
иначе если вниз свободно тогда
вниз
кс
кц
кон

начальная_позиция_x = x() // Сохраняем начальную позицию по X
начальная_позиция_y = y() // Сохраняем начальную позицию по Y

закрасить_область()