Мне понравилась задачка, как мне кажется, наиболее изящное решение через рекурсивную функцию
Пусть А(Размер) - массив, в котором хранится исходная цепочка. Тогда основная процедура будет иметь вид
//*******************************************
Процедура Сформировать()
ТХТ=""+А(1);
Для ц=2 по Размер Цикл
След=Следующий(А(ц-1)+А(ц));
ТХТ=ТХТ+";"+След;
КонецЦикла;
Сообщить(ТХТ);
КонецПроцедуры
Вот и всё! Осталось написать процедуру-функцию Следующий
У меня она рекурсивная
//**********************************************
Функция Следующий(тЧ)
Если тЧ<10 Тогда<br> Возврат(тЧ);
Иначе
Д=Цел(тЧ/10);
Е=тЧ-Д*10;
Возврат(Следующий(Д+Е));
КонецЕсли;
КонецФункции
Вот теперь совсем всё.
При подстановке цепочки 1;7;5;2;6 программа выдала 1;8;3;7;8 то есть чаще встречается 8.
Замечание1 Можешь написать и не рекурсивную, это просто, НО рекурсия красивей(как мне кажется), да и просто делать дальнейшие модификации задачи(например для исходных многозначных чисел).
Замечание2 Я, по сути дела, "вручную" находил десятки и единицы, если в языке, которым ты владеешь, есть функции типа, "остаток от деления", можешь их использовать
Замечание3 Программа абсолютно рабочая, чуть-чуть изменена для детского восприятия, написана на 1С77. Перевести на свой язык, думаю, сумеешь.
Успехов!
Кстати, вот что у меня получилось(не адаптированный текст), если исходная цепочка может содержать любые неотрицательные целые числа, а на выходе - сумма цифр первого, ну и Сумма цифр предыдущего с текущим. Как видишь, практически тот же текст, но более общий.
Функция Следующий(тЧ)
Если тЧ<10 Тогда<br> Возврат(тЧ);
Иначе
сТЧ=Строка(тЧ);
чч=0;
Для цц=1 по СтрДлина(сТЧ) Цикл
чч=чч+Число(Сред(сТЧ,цц,1));
КонецЦикла;
Возврат(Следующий(чч));
КонецЕсли;
КонецФункции
//*******************************************
Процедура Сформировать()
ТХТ=""+Следующий(Цепь.ПолучитьЗначение(1));
Для ц=2 по Цепь.РазмерСписка() Цикл
След=Следующий(Цепь.ПолучитьЗначение(ц-1)+Цепь.ПолучитьЗначение(ц));
ТХТ=ТХТ+";"+След;
КонецЦикла;
Сообщить(ТХТ);
КонецПроцедуры