![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Всем доброго времени суток (страна у нас большая
![]() Условие задачи: На ленте МТ находится число (в 10ой сист. счисления). Умножить его на 2. Программа должна работать как машина тьюринга, т.е. ничего умножать она не умеет, только заменять цифры в ячейках на другие. Например, вводим число 15, программа идет справа налево (потому что умножение), видит 5, вместо него пишет 0, меняет состояние (f=2), выводит 0, идет дальше, видит 1 и, т.к. f=2, вместо 1 пишет 3, выводит. Все. Проблема: Программа при вводе цифры >= 5, выводит только ее правую часть, т.е. вводим 5, выводится 0. Если перед цифрой >=5 стоит цифра [1..4], то считается нормально. В коде есть закомментированный кусок. Если его раскоммент-ть, то программа будет работать так: Вводим 5ку, прога меняет ее на 0 (f=2) и приписывает слева 1, выводит 0, потом видит приписанную 1цу, меняет ее на 3ку и выводит. Рез-тат получается = 30. Может описание проблемы не совсем понятное, но, скачав исходник, Вы сразу все поймете, прога несложная. Прошу подсказки, где, куда, откуда высунуть и засунуть, потому как сам догнать не в состоянии. ![]() Заранее спс за любую помощь. пс. исходник во вложении. |