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

Задание 12

Галия: Здравствуйте, не могу найти алгоритм для решения этой задачи: (№ 2134) (С.С. Поляков) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр. 1. заменить (v, w) 2. нашлось (v) Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Дана программа для исполнителя Редактор: НАЧАЛО ПОКА нашлось (111) заменить (111, 2) заменить (222, 3) заменить (333, 1) КОНЕЦ ПОКА КОНЕЦ Какая строка получится в результате применения приведённой программы к строке вида 1…13…3 (2019 единиц и 2019 троек)?

Ответов - 1

Ирина Марсенич: Добрый день. Составила программу для решения этой задачи {№ 2134 ПОКА нашлось (111) заменить (111, 2) заменить (222, 3) заменить (333, 1) КОНЕЦ ПОКА редактор получает строку вида 1…13…3 (2019 единиц и 2019 троек)? что будет? } var s: string; p1, p2, p3: integer; begin s := '1' * 2019 + '3' * 2019; p1 := Pos('111', s); // определяет позицию первого вхождения 111 в строку s while p1 > 0 do begin//ПОКА нашлось (111) //заменить (111, 2) if p1 > 0 then begin Delete(s, p1, 3); Insert('2', s, p1); end; //заменить (222, 3) p2 := Pos('222', s); // определяет позицию первого вхождения 222 в строку s if p2 > 0 then begin Delete(s, p2, 3); Insert('3', s, p2); end; //заменить (333, 1) p3 := Pos('333', s); // определяет позицию первого вхождения 333 в строку s if p3 > 0 then begin Delete(s, p3, 3); Insert('1', s, p3); end; p1 := Pos('111', s); // определяет позицию первого вхождения 111 в строку s end; // КОНЕЦ ПОКА print(s) end.



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