Программирование : Вопрос 1 : 17

Даны два паровоза, расположенные на одной и той же колее. На паровозах установлены процессоры, управляющие их движением. Паровозы могут двигаться только вправо, причем дискретно: за один такт процессора на одну единицу длины. Колея в обе стороны имеет бесконечную длину. Между паровозами находится остановка, ее длина равна единице хода поезда. Процессоры, могут выполнять следующие команды:

MOV – передвинуть паровоз вправо на единицу длины. Время выполнения – 1 такт процессора.
GOTO<метка> – переход к метке. Время выполнения – 1 такт процессора.
IFSTOP<команда1>
<команда2> – Если под паровозом остановка, выполнить <команду1> иначе <команду2>. Время выполнения – 2 такт процессора.
В процессоры паровозов загружается одна и та же программа и по команде синхронно начинает выполняться.

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

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

Верно ли наше решение?

Ответ:

1. MOV 
2. IFSTOP GOTO 4 
3. GOTO 1 //часть комманды ifstop 
4. MOV 
5. GOTO 4 

Пояснение: цикл в строках 1-3 будет выполняться на обоих паровозах, пока левый паровоз не наедет на остановку. Тогда в его процессоре начнет выполняться цикл в строках 4 – 5, а процессор в правом паровозе продолжит выполнять цикл 1 - 3. При этом левый паровоз на единицу длинны передвинется за 2 такта, правый за 4, откуда следует, что рано или поздно паровозы столкнутся.
1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.