Рассмотрим решение на языке Python
Объяснение:
Первый
Отсортируем имеющийся список как показано.
Получим кортеж, где есть два значения: key и value.
Первое число - собственно, элемент. Второе число - количество раз.
Второй
Создадим словарь и будем считать количество элементов.
Выведем второй элемент кортежа максимального значения
Третий
Создадим словарь, множество, список ключей.
Как и во втором , пройдемся по элементам и будем увеличивать счетчик на 1.
Выведем с метода format, чтобы было красиво.
Четвертый
Самый простой, и тем не менее, правильно работающий. Используем библиотеку collections, откуда возьмем тип данных Counter - словарный тип, используемый для подсчета объектов.
Приведу пример на Haskell.
import Data.List (group, groupBy, sort, sortBy, unfoldr)import Data.Function (on)import System.RandomgetFreq :: [Int] -> [Int]getFreq xs = last $ [[fst zs | zs <- ys] | ys <- groupBy ((==) `on` snd) . sortBy (compare `on` snd) $ [(head x, length x) | x <- group . sort $ xs]]randomList :: Int -> (Int, Int) -> IO [Int]randomList 0 _ = return []randomList n range = do r <- randomRIO range rs <- randomList (n-1) range return (r:rs) main :: (Int, Int) -> IO()main range = do rs <- randomList 20 range print rs print $ getFreq rsЗдесь алгоритм поиска наиболее часто встречающихся чисел последовательности реализован в функции getFreq. В ней мы исходный массив сортируем и группируем соседние элементы по значению. Затем формируем список из кортежей (число, частотность) и сортируем по возрастанию частотности. Затем группируем соседей по частотности, выделяем только значения, без указания частотности и берем последний элемент – самая большая частотность. Этот элемент – список из самых часто встречающихся элементов.
Поделитесь своими знаниями, ответьте на вопрос:
переделайте данную программу так, чтобы основной алгоритм выполнялся в отдельной функции.#include #include #include #include #include "string.h"using namespace std; int transliterate(char* str, char* newstr){ setconsolecp(1251); setconsoleoutputcp(1251); for (; *str ! = 0; str++) { switch (str[0]) { case 'а': strcat(& newstr[0], "a"); break; case 'б': strcat(& newstr[0], "b"); break; case 'в': strcat(& newstr[0], "v"); break; case 'г': strcat(& newstr[0], "g"); break; case 'д': strcat(& newstr[0], "d"); break; case 'е': strcat(& newstr[0], "e"); break; case 'ё': strcat(& newstr[0], "ye"); break; case 'ж': strcat(& newstr[0], "zh"); break; case 'з': strcat(& newstr[0], "z"); break; case 'и': strcat(& newstr[0], "i"); break; case 'й': strcat(& newstr[0], "y"); break; case 'к': strcat(& newstr[0], "k"); break; case 'л': strcat(& newstr[0], "l"); break; case 'м': strcat(& newstr[0], "m"); break; case 'н': strcat(& newstr[0], "n"); break; case 'о': strcat(& newstr[0], "o"); break; case 'п': strcat(& newstr[0], "p"); break; case 'р': strcat(& newstr[0], "r"); break; case 'с': strcat(& newstr[0], "s"); break; case 'т': strcat(& newstr[0], "t"); break; case 'у': strcat(& newstr[0], "u"); break; case 'ф': strcat(& newstr[0], "f"); break; case 'х': strcat(& newstr[0], "ch"); break; case 'ц': strcat(& newstr[0], "z"); break; case 'ч': strcat(& newstr[0], "ch"); break; case 'ш': strcat(& newstr[0], "sh"); break; case 'щ': strcat(& newstr[0], "ch"); break; case 'ъ': strcat(& newstr[0], "'"); break; case 'ы': strcat(& newstr[0], "y"); break; case 'ь': strcat(& newstr[0], "'"); break; case 'э': strcat(& newstr[0], "e"); break; case 'ю': strcat(& newstr[0], "yu"); break; case 'я': strcat(& newstr[0], "ya"); break; case 'а': strcat(& newstr[0], "a"); break; case 'б': strcat(& newstr[0], "b"); break; case 'в': strcat(& newstr[0], "v"); break; case 'г': strcat(& newstr[0], "g"); break; case 'д': strcat(& newstr[0], "d"); break; case 'е': strcat(& newstr[0], "e"); break; case 'ё': strcat(& newstr[0], "ye"); break; case 'ж': strcat(& newstr[0], "zh"); break; case 'з': strcat(& newstr[0], "z"); break; case 'и': strcat(& newstr[0], "i"); break; case 'й': strcat(& newstr[0], "y"); break; case 'к': strcat(& newstr[0], "k"); break; case 'л': strcat(& newstr[0], "l"); break; case 'м': strcat(& newstr[0], "m"); break; case 'н': strcat(& newstr[0], "n"); break; case 'о': strcat(& newstr[0], "o"); break; case 'п': strcat(& newstr[0], "p"); break; case 'р': strcat(& newstr[0], "r"); break; case 'с': strcat(& newstr[0], "s"); break; case 'т': strcat(& newstr[0], "t"); break; case 'у': strcat(& newstr[0], "u"); break; case 'ф': strcat(& newstr[0], "f"); break; case 'х': strcat(& newstr[0], "ch"); break; case 'ц': strcat(& newstr[0], "z"); break; case 'ч': strcat(& newstr[0], "ch"); break; case 'ш': strcat(& newstr[0], "sh"); break; case 'щ': strcat(& newstr[0], "ch"); break; case 'ъ': strcat(& newstr[0], "'"); break; case 'ы': strcat(& newstr[0], "y"); break; case 'ь': strcat(& newstr[0], "'"); break; case 'э': strcat(& newstr[0], "e"); break; case 'ю': strcat(& newstr[0], "yu"); break; case 'я': strcat(& newstr[0], "ya"); break; default: { char temp[2] = { str[0], 0 }; strcat(& newstr[0], & temp[0]); } } } return *str; }int main(){ char x[] = "я обожаю программировать на турбо паскале! "; char y[100] = { 0 }; transliterate(x, & y[0]); printf("%s\n", y); getch(); return 0; }
ответ:
это все выше перечисленные