Свер­ху сво­бод­но снизу сво­бод­но слева сво­бод­но спра­ва сво­бод­но

Эти ко­ман­ды можно ис­поль­зо­вать вме­сте с усло­ви­ем «если», име­ю­щим сле­ду­ю­щий вид:

Если усло­вие то

по­сле­до­ва­тель­ность ко­манд

Все

Здесь усло­вие – одна из ко­манд про­вер­ки усло­вия. По­сле­до­ва­тель­ность ко­манд – это одна или не­сколь­ко любых ко­манд-при­ка­зов. На­при­мер, для пе­ре­дви­же­ния на одну клет­ку впра­во, если спра­ва нет стен­ки, и за­кра­ши­ва­ния клет­ки можно ис­поль­зо­вать такой ал­го­ритм:

Если спра­ва сво­бод­но то

Впра­во

За­кра­сить

Все

В одном усло­вии можно ис­поль­зо­вать не­сколь­ко ко­манд про­вер­ки усло­вий, при­ме­няя ло­ги­че­ские связ­ки и, или, не, на­при­мер:

Если (спра­ва сво­бод­но) и (не снизу сво­бод­но) то

Впра­во

Все

Для по­вто­ре­ния по­сле­до­ва­тель­но­сти ко­манд можно ис­поль­зо­вать цикл «пока», име­ю­щий сле­ду­ю­щий вид:

нц пока усло­вие

по­сле­до­ва­тель­ность ко­манд

Кц

На­при­мер, для дви­же­ния впра­во, пока это воз­мож­но, можно ис­поль­зо­вать сле­ду­ю­щий ал­го­ритм:

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

Впра­во

Кц

Вы­пол­ни­те за­да­ние.

На бес­ко­неч­ном поле име­ет­ся вер­ти­каль­ная стена. Длина стены не­из­вест­на. От ниж­не­го конца стены впра­во от­хо­дит го­ри­зон­таль­ная стена также не­из­вест­ной длины. Робот на­хо­дит­ся в клет­ке, рас­по­ло­жен­ной слева от вер­ти­каль­ной стены и выше го­ри­зон­таль­ной стены. На ри­сун­ке ука­зан один из воз­мож­ных спо­со­бов рас­по­ло­же­ния стен и Ро­бо­та (Робот обо­зна­чен бук­вой «Р»).

На­пи­ши­те для Ро­бо­та ал­го­ритм, за­кра­ши­ва­ю­щий все клет­ки, рас­по­ло­жен­ные ниже го­ри­зон­таль­ной стены и при­мы­ка­ю­щие к ней. Тре­бу­ет­ся за­кра­сить толь­ко клет­ки, удо­вле­тво­ря­ю­щие дан­но­му усло­вию. На­при­мер, для при­ведённого выше ри­сун­ка Робот дол­жен за­кра­сить сле­ду­ю­щие клет­ки (см. ри­су­нок).

Ко­неч­ное рас­по­ло­же­ние Ро­бо­та может быть про­из­воль­ным. Ал­го­ритм дол­жен ре­шать за­да­чу для про­из­воль­но­го раз­ме­ра поля и лю­бо­го до­пу­сти­мо­го рас­по­ло­же­ния стен внут­ри пря­мо­уголь­но­го поля. При ис­пол­не­нии ал­го­рит­ма Робот не дол­жен раз­ру­шить­ся, вы­пол­не­ние ал­го­рит­ма долж­но за­вер­шить­ся. Ал­го­ритм может быть вы­пол­нен в среде фор­маль­но­го ис­пол­ни­те­ля или за­пи­сан в тек­сто­вом ре­дак­то­ре. Со­хра­ни­те ал­го­ритм в тек­сто­вом файле.

20.2На­пи­ши­те про­грам­му для ре­ше­ния сле­ду­ю­щей за­да­чи. Ка­ме­ра на­блю­де­ния ре­ги­стри­ру­ет в ав­то­ма­ти­че­ском ре­жи­ме ско­рость про­ез­жа­ю­щих мимо неё ав­то­мо­би­лей, округ­ляя зна­че­ния ско­ро­сти до целых чисел. Не­об­хо­ди­мо опре­де­лить сред­нюю за­ре­ги­стри­ро­ван­ную ско­рость всех ав­то­мо­би­лей. Если не менее двух ав­то­мо­би­лей дви­га­лись со ско­ро­стью не боль­ше 40 км/ч, вы­ве­ди­те «YES», иначе вы­ве­ди­те «N0».

Про­грам­ма по­лу­ча­ет на вход число про­ехав­ших ав­то­мо­би­лей N (1 ≤ N ≤ 30), затем ука­зы­ва­ют­ся их ско­ро­сти. Зна­че­ние ско­ро­сти не может быть мень­ше 1 и боль­ше 300.Про­грам­ма долж­на сна­ча­ла вы­ве­сти сред­нюю ско­рость, затем «YES» или «N0».

При­мер ра­бо­ты про­грам­мы:

Вход­ные дан­ные Вы­ход­ные дан­ные
4 74 69 63 96 63 NO

Наши рекомендации