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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int compare(const void* a, const void* b){
  5.     return *(int*)a - *(int*)b;
  6. }
  7.  
  8. int main(void){
  9.     int* p, *i, *e;
  10.     int a[] = { 7, 1, 2, 1, 3, 2, 1, 1, 2, 7, 2, 1, 3, 4, 2, 3, 3, 1 };
  11.     int n   = sizeof(a)/sizeof(a[0]);
  12.  
  13.     qsort(a, n, sizeof(a[0]), &compare);
  14.  
  15.     for(p = &a[0], e = &a[n]; p != e; p = i){
  16.         i = p + 1;
  17.         while((i != e) && (*i == *p))
  18.             ++i;
  19.        
  20.         printf("%d(%d)\n", *p, (int)(i - p));
  21.     }
  22.     return 0;
  23. }

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

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

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


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

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

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы