Есть ответ 👍

Даны вещественные векторы х и у размером 10. вывести на печать тот вектор длина которого больше

132
152
Посмотреть ответы 1

Ответы на вопрос:


мне понравилась , как мне кажется, наиболее изящное решение через рекурсивную функцию

пусть а(размер) - массив, в котором хранится исходная цепочка. тогда основная процедура будет иметь вид

//*******************************************

процедура сформировать() тхт=""+а(1); для ц=2 по размер цикл       след=следующий(а(ц-1)+а(ц));       тхт=тхт+"; "+след; конеццикла; сообщить(тхт); конецпроцедуры

 

вот и всё! осталось написать процедуру-функцию следующий

у меня она рекурсивная

//**********************************************

функция следующий(тч)если тч< 10 тогда    возврат(тч); иначе      д=цел(тч/10);       е=тч-д*10;       возврат(следующий(д+е)); конецесли; конецфункции

 

вот теперь совсем всё.

при подстановке цепочки 1; 7; 5; 2; 6 программа выдала 1; 8; 3; 7; 8 то есть чаще встречается 8.

 

замечание1 можешь написать и не рекурсивную, это просто, но рекурсия красивей(как мне кажется), да и просто делать дальнейшие модификации (например для исходных многозначных чисел).

замечание2 я, по сути дела, "вручную" находил десятки и единицы, если в языке, которым ты владеешь, есть функции типа, "остаток от деления", можешь их использовать 

замечание3 программа абсолютно рабочая, чуть-чуть изменена для детского восприятия, написана на 1с77. перевести на свой язык, думаю, сумеешь.

успехов!

 

 

кстати, вот что у меня получилось(не адаптированный текст), если исходная цепочка может содержать любые неотрицательные целые числа, а на выходе - сумма цифр первого, ну и сумма цифр предыдущего с текущим. как видишь, практически тот же текст, но более общий.

 

функция следующий(тч) если тч< 10 тогда    возврат(тч); иначе    стч=строка(тч);     чч=0;     для цц=1 по стрдлина(стч) цикл       чч=чч+число(сред(стч,цц,1));     конеццикла;     возврат(следующий(чч)); конецесли; конецфункции

//*******************************************процедура сформировать() тхт=""+следующий(цепь.получитьзначение(1)); для ц=2 по цепь.размерсписка() цикл     след=следующий(цепь.получитьзначение(ц-1)+цепь.получитьзначение(ц));     тхт=тхт+"; "+след; конеццикла; сообщить(тхт); конецпроцедуры

 

 

Популярно: Информатика