Ввести массив длинных целых беззнаковых чисел. определить цифру (или цифры), которая чаще всего повторялась в этих числах.С указателями

С клавиатуры ввести массив длинных целых беззнаковых чисел. определить цифру (или цифры), которая чаще всего повторялась в этих числах.

Подсказка: целесообразно создать отдельный массив, в который записывать количество повторений каждой из десятичных цифр.


Ответы (1 шт):

Автор решения: Павел Ериков

Почему так сложно хотя бы начать? Сейчас 20 декабря. Конец семестра. И не ужели за целый семестр ничего не выучили?

Пойдем по порядку:

  1. Нужно создать массив под длинные целые беззнаковые числа. И тут в есть 2 варианта

    1. Использовать статический массив.

      Для начало нужно почитать про них. Вы задаёте массиву такой размер, который вряд ли будет заполнять пользователь. (Например 100 или 128 элементов).

      Далее вы просите пользователя ввести кол-во чисел, которые он собирается вводить (очевидно это число должно быть строго меньше размера массива).

    2. Использовать динамический массив.

      Так же читаете про них.

      Сначала вы просите пользователя ввести кол-во чисел, а далее выделяете память под введенное кол-во чисел.

      Так же нужно не забыть освободить память, чтобы не было утечки.

  2. После 1 пункта у нас есть инициализированный массив arr длинной size.

    Далее вы просите пользователя ввести size чисел, которые заносите в массив. Ссылку на циклы я скидывать не буду, а то это слишком уже.

  3. Потом, как и в первом пункте вы создаёте уже точно статический массив длинной 10, например digits. (т.к. цифр 10).

  4. Далее самое важное вы пишите функцию, которая принимает длинное целое беззнаковое число, а так же статический массив digits, в который после завершения работы функции, будет записаны кол-во каждой цифры.

    Например так: void calcDigits(unsigned long int num, int* digits)

    Сама реализация функции довольна проста, очевидно я не буду писать её код вам, но подсказка нужно использовать деление с остатком на 10 для получения последней цифры, и деление на 10, чтобы перейти к следующей цифре с конца.

  5. И самое простое это в массиве digits найти максимальное число max_count. После чего в последний раз пройти по массиву digits и если элемент равен max_count, то выводим эту цифру в консоль.

Как же просто все оказывается :)

P.S. Да мне проще было просто скинуть код, который еще до вопроса был написан, но ...

→ Ссылка