Найти количество повторений каждого элемента массива, используя указатели - 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Создаем функцию сортировки массива, используя функцию qsort() и сравнивая элементы по значению
- В функции main() выделяем указатель на первый элемент массива и определяем размер массива
- Сортируем массив, используя функцию qsort() и передавая ей указатель на начало массива, размер массива и функцию сравнения
- Используем цикл для прохода по отсортированному массиву и подсчета повторений каждого элемента
- Выводим количество повторений каждого элемента на экран
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д