Найти повторяющиеся элементы массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть одномерный массив надо выяснить сколько раз встречается пара таких же элементов. Например аа, вв, пп,аа, результат должен быть аа - 2 раза, вв- 1 раз, пп -1 раз. Идей для выполнения этого задания вообще нету (((

Решение задачи: «Найти повторяющиеся элементы массива»

textual
Листинг программы
int b[256];
int main(){
    char a[123];
    int n;
    gets(a);
    for (int i = 1; i < sizeof(a) / sizeof(a[0]); i++){
        if (a[i] == a[i - 1]){
            b[a[i]]++;
        }
    }
    for (int i = 1; i < 256; i++){
        if (b[i]){
            printf("%c%c - %d times\n", i, i, b[i]);
        }
    }
    return 0;
}

Объяснение кода листинга программы

Вот что делается в этом коде:

  1. Объявляется массив b размером 256.
  2. В цикле for начиная с индекса 1 и до sizeof(a) / sizeof(a[0]) (что эквивалентно sizeof(a) / sizeof(a[0]) и дает размер массива a в байтах, деленный на размер одного элемента массива a, то есть количество элементов в массиве a) происходит следующее:
    • Проверяется, является ли текущий элемент массива a равным предыдущему элементу.
    • Если это так, то к значению переменной b приписывается единица (то есть b[a[i]]++).
  3. В цикле for начиная с индекса 1 и до 255 (что меньше, чем sizeof(b) / sizeof(b[0]) и поэтому безопасно) происходит следующее:
    • Если значение переменной b не равно нулю (то есть b[i]), то выводится сообщение вида char - times, где char это значение переменной i, а times это значение переменной b[i].
  4. В конце функции main возвращается 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы