Пожалуйста, помогите! Дана матрица и нужно посчитать количество уникальных элементов. Но минусовые элементы код почему то не считает как уникальные

#include<stdio.h>
#include<conio.h>

int main()
{
const int n=3, m=4; 
int ar[n][m], i, j;
printf("Enter elements of Matrix...\n");
for(i=0;i<n;i++)
 {
    for(j=0;j<m;j++)
    {
        printf("Input elements in pocket [%d][%d]\t",i,j);
        scanf("%d", &ar[i][j]);
     }
 }
printf("Matrix is....\n");
for(i=0;i<n;i++)
{
    for(j=0;j<m;j++)
    {
        printf("%d\t", ar[i][j]);
    }
    printf("\n");   
}
getch();
int max = 0, found = 0;
for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
        if(max < ar[i][j])
                max = ar[i][j];

int b[max+1] = {0};
for(int i = 0 ; i < n; i++)
    for(int j = 0; j < m; j++)
        b[ar[i][j]]++;

int counter=0;
for(int i = 1; i <= max; i++)
    if(b[i] == 1)
        counter++;
        found = 1;
if(counter!=0) {

printf("%d", counter); 
   }
if(counter==0){
    printf("No unique element in the matrix");
}
}

Ответы (1 шт):

Автор решения: Mikhailo

Предлагаю не делать массив неизвестного размера, на что справедливо указал Harry, а поместить все элементы в отдельный одномерный массив, отсортировать его, и искать в нем те элементы, которые отличаются от обоих соседей.

Это и будут уникальные элементы.

→ Ссылка