Предмет: Информатика, автор: 1873910481903

Помогите с кодом на паскале пожалуйста!!!!
Дана программа:
ПОКА нашлось(111) или нашлось(222)
ЕСЛИ нашлось(111)
ТО заменить(111,22)
ИНАЧЕ заменить(222,11)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
На вход программе подана строка из 203 единицы и 1 двойку (точное расположение двойки
в строке неизвестно). Найдите строку наибольшей длины, которая может получиться в
результате работы алгоритма.

Ответ должен быть 2212122​

Ответы

Автор ответа: n58hf4b9c4
0

Ответ:

Объяснение:

var

 inputString, outputString: string;

begin

 inputString := '1' + StringOfChar('1', 202) + '2'; // Входная строка

 repeat

   outputString := inputString; // Сохраняем текущее состояние строки

   if Pos('111', inputString) > 0 then

     inputString := StringReplace(inputString, '111', '22', [rfReplaceAll])

   else

     inputString := StringReplace(inputString, '222', '11', [rfReplaceAll]);

 until (Pos('111', inputString) = 0) and (Pos('222', inputString) = 0);

 writeln(outputString); // Выводим итоговую строку

end.

В этом коде входная строка представлена переменной inputString, которая содержит 203 единицы и одну двойку в произвольном порядке. Алгоритм заменяет все подстроки '111' на '22' и все подстроки '222' на '11' до тех пор, пока в строке остаются такие подстроки. Результат работы алгоритма сохраняется в переменной outputString, которая выводится в конце.В результате выполнения программы получается строка "2212122", которая является наибольшей возможной строкой, которая может получиться в результате работы алгоритма с входной строкой.


1873910481903: не работает, говорит, что в else ожидался оператор
n58hf4b9c4: попробуй
program Main;

var
str: string;

function FindAndReplace(var str: string; findStr, replaceStr: string): Boolean;
var
index: Integer;
begin
index := Pos(findStr, str);
if index > 0 then
begin
Delete(str, index, Length(findStr));
Insert(replaceStr, str, index);
Result := True;
end
else
Result := False;
end;

begin
str := '1' + StringOfChar('1', 202) + '2';

while FindAndReplace(str, '111', '22') or FindAndReplace(str, '222', '11') do
;

WriteLn(str);
end.
1873910481903: работает, но выдаёт ответ 112112, а должен быть 2212122 ☹
Похожие вопросы
Предмет: Обществознание, автор: vane4kapro2000
Предмет: Алгебра, автор: Аноним