Имеем строку из единиц длиной 99 символов. Пока в строке имеется подстрока 111, выполняется цикл. Подстрока 111 заменяется на 2 и это уменьшает длину строки на 2 символа. Эта операция повторяется, пока не появится подстрока 222, что достигается за три прохода по циклу. При этом длина строки в целом сократится на 6. Подстрока 222 заменяется на 1, после чего получается строка исходного вида (из одних единиц), но с длиной на 8 меньше исходной. Этот процесс будет повторятся и длина строки последовательно будет такой: 99, 91, 83, ... 11. Можно предположить, что строка окончательно примет длину 99 mod 8 = 3, но все немного сложнее. Дело в том, что строка длиной 11, т.е. 1111111111 будет последовательно преобразована к 211111111 2211111 22211 и после этого цикл закончится, поскольку подстроки 111 больше найдено не будет.
// PascalABC.NET 3.3, сборка 1627 от 27.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк (столбцов) в массиве:'); Writeln('*** Исходный массив ***'); var a:=MatrRandom(n,n,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); Writeln('Cуммы и число положительных элементов построчно:'); foreach var r in a.Rows do begin var s:=r.Where(t->t>0); Println(s.Sum,s.Count) end end.
ответ в закрепе!
Объяснение: