Подсчитать, сколько в матрице разных чисел - C (СИ)
Формулировка задачи:
Нужно подсчитать сколько в матрице разных чисел. Помогите написать
Решение задачи: «Подсчитать, сколько в матрице разных чисел»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> int asc(int *a, int *b) { return *a - *b; } // ... qsort(a, n, sizeof(*a), asc); int k=1; for (int i=1, *p=a; i<n; ++i, ++p) k += *(p+1)!=*p; printf("%d\n", k);
Объяснение кода листинга программы
В этом коде:
- Название переменной:
a
Тип: int Значение: массив целых чисел Описание: В этой переменной хранится массив целых чисел, который нужно отсортировать. - Название переменной:
b
Тип: int Значение: массив целых чисел Описание: В этой переменной может храниться массив целых чисел, который нужно отсортировать. Однако, в данном коде, эта переменная не используется. - Название функции:
asc
Тип: int Аргументы: int a, int b Описание: Эта функция сравнивает два числа и возвращает их разность. Она используется в функцииqsort
для сортировки массиваa
. - Название функции:
qsort
Тип: void Аргументы: int a, int n, size_t size, int (compar)(const void , const void ) Описание: Эта функция сортирует массивa
по возрастанию. Она использует функциюasc
в качестве аргумента сравнения. - Название переменной:
n
Тип: int Значение: количество элементов в массивеa
Описание: Эта переменная содержит количество элементов в массивеa
. - Название переменной:
k
Тип: int Значение: количество уникальных чисел в массиве Описание: Эта переменная инициализируется значением 1 и увеличивается каждый раз, когда функцияqsort
встречает новое число. В конце она выводит общее количество уникальных чисел в массиве. - Название переменной:
i
Тип: int Значение: индекс текущего элемента в массиве Описание: Эта переменная используется в цикле для прохода по всем элементам массива. - Название переменной:
p
Тип: int * Значение: указатель на текущий элемент массива Описание: Эта переменная используется в цикле для прохода по всем элементам массива. - Название переменной:
printf
Тип: int Аргументы: const char *format, ... Описание: Эта функция используется для вывода значения переменнойk
на экран. Таким образом, в этом коде сначала происходит сортировка массиваa
по возрастанию с помощью функцииqsort
. Затем, в цикле, происходит проход по всем элементам массива и каждый раз, когда функцияqsort
встречает новое число, значение переменнойk
увеличивается. В конце, с помощью функцииprintf
, выводится общее количество уникальных чисел в массиве.