В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
badayevadiana20
badayevadiana20
21.11.2020 03:23 •  Информатика

Много 5)На бесконечном поле имеется стена, состоящая из 5 последовательных отрезков, расположенных змейкой:
вправо, вниз, влево, вниз, вправо, все отрезки неизвестной длины. Робот находится в клетке,
расположенной снизу от левого края первой горизонтальной стены.
На рисунке указан один из возможных расположения стен и Робота (Робот обозначен буквой «Р») .
Напишите для Робота алгоритм, закрашивающий все клетки, расположенные
ниже первого и левее второго отрезков стены и левее четвертого и ниже пятого отрезков
стены и угловую клетку. Робот должен закрасить только клетки, удовлетворяющие
данному условию. Например, для приведённого выше рисунка Робот должен закрасить
следующие клетки (см. рисунок)
Конечное расположение Робота может быть произвольным. Алгоритм должен
решать задачу для произвольного размера поля и любого допустимого расположения
стен внутри прямоугольного поля. При исполнении алгоритма Робот не должен
разрушиться.
Алгоритм может быть, записан в любом текстовом редакторе или письменно.

Показать ответ
Ответ:
fedarmo
fedarmo
14.12.2021 22:00

Ре­ше­ние.

15.1 Сле­ду­ю­щий ал­го­ритм вы­пол­нит тре­бу­е­мую за­да­чу.

нц

пока спра­ва сво­бод­но

за­кра­сить

впра­во

кц

нц

пока снизу сво­бод­но

за­кра­сить

вниз

кц

за­кра­сить

нц

пока не (снизу сво­бод­но)

влево

кц

вниз

нц

пока не (спра­ва сво­бод­но)

за­кра­сить

вниз

кц

за­кра­сить

впра­во

нц

пока не (свер­ху сво­бод­но)

за­кра­сить

впра­во

кц

15.2 Ре­ше­ние

var a, s: integer;

begin

s: = 0;

readln(a);

while a<>0 do begin

if (a mod 8=0) and (a mod 10 = 6) then

s : = s + a;

readln(a);

end;

writeln(s)

end.

Для про­вер­ки пра­виль­но­сти ра­бо­ты про­грам­мы не­об­хо­ди­мо ис­поль­зо­вать сле­ду­ю­щие тесты:

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

1

8

6

10

0

0

2

16

0

16

3

16

96

5

0

112

Спрятать критерии

Критерии проверки:

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­ния 15.

Ал­го­ритм пра­виль­но ра­бо­та­ет при всех до­пу­сти­мых ис­ход­ных дан­ных 2

При всех до­пу­сти­мых ис­ход­ных дан­ных верно сле­ду­ю­щее:

1) вы­пол­не­ние ал­го­рит­ма за­вер­ша­ет­ся, и при этом Робот не раз­би­ва­ет­ся;

2) за­кра­ше­но не более 10 лиш­них кле­ток;

3) оста­лись не­за­кра­шен­ны­ми не более 10 кле­ток из числа тех, ко­то­рые долж­ны были быть за­кра­ше­ны

1

За­да­ние вы­пол­не­но не­вер­но, т. е. не вы­пол­не­ны усло­вия, поз­во­ля­ю­щие по­ста­вить 1 или 0

Мак­си­маль­ный 2

Кри­те­рии оце­ни­ва­ния вы­пол­не­ния за­да­ния 15.

Пред­ло­же­но вер­ное ре­ше­ние. Про­грам­ма пра­виль­но ра­бо­та­ет на всех при­ведённых выше те­стах. Про­грам­ма может быть за­пи­са­на на любом языке про­грам­ми­ро­ва­ния 2

Про­грам­ма выдаёт не­вер­ный ответ на одном из те­стов, при­ведённых выше. На­при­мер, ре­ше­ние, в ко­то­ром не­вер­но за­да­но усло­вие от­бо­ра чисел: (a mod 8=0)or(a mod 10=6), вы­даст не­пра­виль­ный ответ на тесте № 1. 1

Про­грам­ма выдаёт на те­стах не­вер­ные от­ве­ты, от­лич­ные от опи­сан­ных в кри­те­рии на 0

Мак­си­маль­ный 2

0,0(0 оценок)
Ответ:
dmitriyslesarev
dmitriyslesarev
23.01.2024 12:14
Добрый день!

Для решения данной задачи, Роботу необходимо будет перемещаться по полю, пока не выполнены заданные условия.

Вот алгоритм, который Робот может использовать:

1. Начать с позиции ниже первого отрезка стены и слева от второго отрезка стены.
2. Проверить, что текущая позиция Робота удовлетворяет условиям задачи (то есть позиция находится ниже первого отрезка стены, левее второго отрезка стены, левее четвертого отрезка стены и ниже пятого отрезка стены, а также в угловой клетке).
3. Если текущая позиция Робота удовлетворяет условиям, закрасить текущую клетку и перейти к шагу 5.
4. Если текущая позиция Робота не удовлетворяет условиям, выполнить следующие шаги:
а) Проверить, есть ли возможность двигаться вправо. Если возможно, перейти к следующей клетке справа и перейти к шагу 2.
б) Если невозможно двигаться вправо, проверить, есть ли возможность двигаться вниз. Если возможно, перейти к следующей клетке вниз и перейти к шагу 2.
в) Если невозможно двигаться вниз, проверить, есть ли возможность двигаться влево. Если возможно, перейти к следующей клетке слева и перейти к шагу 2.
г) Если невозможно двигаться влево, проверить, есть ли возможность двигаться вверх. Если возможно, перейти к следующей клетке вверх и перейти к шагу 2.
д) Если невозможно двигаться ни в одном из направлений (вверх, вниз, влево, вправо), значит задача неразрешима и Робот не сможет закрасить нужные клетки.

5. После закрашивания текущей клетки, проверить, можно ли двигаться вниз. Если возможно, перейти к следующей клетке вниз и вернуться к шагу 2.
6. Если невозможно двигаться вниз, проверить, можно ли двигаться вправо. Если возможно, перейти к следующей клетке справа и вернуться к шагу 2.
7. Если невозможно двигаться ни вниз, ни вправо, значит задача выполнена, и Робот закрасил все необходимые клетки.

Важно заметить, что данное решение будет работать для любых размеров поля и произвольного расположения стен внутри прямоугольного поля.

Надеюсь, алгоритм был понятен. Если у вас есть дополнительные вопросы, не стесняйтесь задавать.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота