Форум » Выполнение и анализ алгоритмов для исполнителей » задание 14, №121 » Ответить

задание 14, №121

alenka.kurilyak: Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. заменить (v, w) нашлось (v) Дана программа для исполнителя Редактор: НАЧАЛО ПОКА нашлось (333) ИЛИ нашлось (555) ЕСЛИ нашлось (555) ТО заменить (555, 3) ИНАЧЕ заменить (333, 5) КОНЕЦ ЕСЛИ КОНЕЦ ПОКА КОНЕЦ Какая строка получится в результате применения приведённой выше программы к строке, состоящей из 146 идущих подряд цифр 5? В ответе запишите полученную строку. В ответах результат получается 553355, точно такой же результат получается в программе для решения задач с Редактором (Р. Либеров и А.Л. Наймушин). Проходя первый цикл пока заменяет сразу все 555 подряд, в последующих прохождениях цикла как при замене 333 на 5 как только накопится 555, сразу заменяет их на 3. Не противоречит ли алгоритм работы программы сам себе? Я решала так: сначала в стоке заменяем все встречающиеся 555 на 3, из 146 подряд идущих 5-к получаем 48 идущих подряд 333333...и 55 в конце затем меняем уже во вновь полученной строке все встречающиеся 333 на 5, и т.д. Какой алгоритм правильный?

Ответов - 8

Поляков: alenka.kurilyak пишет: Не противоречит ли алгоритм работы программы сам себе? Не очень понятно, в чем вопрос. затем меняем уже во вновь полученной строке все встречающиеся 333 на 5, и т.д. Это не соответствует программе, которая дана в условии.

alenka.kurilyak: если коротко: у вас от ответах 553355, у меня 55. кто ошибся?

Поляков: alenka.kurilyak пишет: у вас от ответах 553355, у меня 55. кто ошибся? Предлагаю написать программу и проверить.


alenka.kurilyak: Проверяла в программе, ответ получился 553355. Почему??? Как решаю я: строка из 146 пятерок в результате замен превращается в строку из 48 троек и 55 в конце затем 333333(48 троек) и 55 в конце должны быть заменены на 555555(16 пятерок) и 55 в конце, .т.е. в результате 18 пятерок затем 555555555555555555 заменяем на 333333 затем 333333 заменяем на 55 В чем моя ошибка?? Как решает программа: строка из 146 пятерок в результате замен превращается в строку из 48 троек и 55 в конце затем в строке из 333333(48 троек) и 55 заменяем встреченные 333 на 5 и как только накопилось в начале строки 555 они тут же меняются на 3. Хотя первая (исходная) строка обрабатывается не так

Поляков: alenka.kurilyak пишет: затем 333333(48 троек) и 55 в конце должны быть заменены на 555555(16 пятерок) и 55 в конце, Попробуйте обосновать этот вывод, используя данный в условии алгоритм.

alenka.kurilyak: почему тогда при обработке исходной строки в программе так же сразу не меняется первые накопленные 333 на 5?

Поляков: alenka.kurilyak пишет: почему тогда при обработке исходной строки в программе так же сразу не меняется первые накопленные 333 на 5? А попробуйте выполнить алгоритм как формальный исполнитель, ничего не додумывая и не интерпретируя. По шагам, вручную. Скажем, для цепочки из 20 пятерок.

alenka.kurilyak: 55555555555555555555 33333355 5555 35 не так разве?



полная версия страницы