Найти количество повторений каждого элемента массива, используя указатели - C (СИ)

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

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

Помогите пожалуйста, нужно найти количество повторений каждого елемента масива на языке си

Решение задачи: «Найти количество повторений каждого элемента массива, используя указатели»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int compare(const void* a, const void* b){
    return *(int*)a - *(int*)b;
}
 
int main(void){
    int* p, *i, *e;
    int a[] = { 7, 1, 2, 1, 3, 2, 1, 1, 2, 7, 2, 1, 3, 4, 2, 3, 3, 1 };
    int n   = sizeof(a)/sizeof(a[0]);
 
    qsort(a, n, sizeof(a[0]), &compare);
 
    for(p = &a[0], e = &a[n]; p != e; p = i){
        i = p + 1;
        while((i != e) && (*i == *p))
            ++i;
        
        printf("%d(%d)\n", *p, (int)(i - p));
    }
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Создаем функцию сортировки массива, используя функцию qsort() и сравнивая элементы по значению
  3. В функции main() выделяем указатель на первый элемент массива и определяем размер массива
  4. Сортируем массив, используя функцию qsort() и передавая ей указатель на начало массива, размер массива и функцию сравнения
  5. Используем цикл для прохода по отсортированному массиву и подсчета повторений каждого элемента
  6. Выводим количество повторений каждого элемента на экран
  7. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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