Найти количество повторений каждого элемента массива, используя указатели - 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, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д