Пожалуйста, помогите! Дана матрица и нужно посчитать количество уникальных элементов. Но минусовые элементы код почему то не считает как уникальные
#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, а поместить все элементы в отдельный одномерный массив, отсортировать его, и искать в нем те элементы, которые отличаются от обоих соседей.
Это и будут уникальные элементы.