studiati questa, tra le soluzioni possibili
codice:
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned int i, j;
unsigned int a[][3] = {
{11, 2, 3},
{4, 2, 6},
{4, 2, 5}
};
size_t dim_a =sizeof ( a ) / sizeof (a[0][0]);
//Visualizzazione matrice
for( i = 0; i < 3; i++) {
printf("\n");
for(j=0; j<3; j++)
printf("%5d ",a[i][j]);
printf("\n");
}
/*
normalmente un contatore come quello che vuoi
realizzare utilizza gli alberi binari.
Qui utilizziamo un metodo un po' meno efficiente
che va bene solo per piccole matrici
*/
/*
definiamo una seconda matrice che un numero di righe uguale
alla dimensione della prima matrice e due colonne.
Nella prima colonna mettiamo gli elementi della prima matrice
nella seconda il numero di occorrenze.
-1 rappresenta la fine matrice
*/
/*
legge tutta la matrice e per ogni elemento scorre la
matrice dei confronti per verificare se l'elemento
già esiste
*/
unsigned int matrice_confronti[ dim_a ][2] ;
size_t dim_mat_confr = sizeof (matrice_confronti) / sizeof (matrice_confronti[0][0]) / 2 ;
// inizializzazione
for( i = 0; i < dim_mat_confr; i++) {
matrice_confronti[i][0] = -1;
matrice_confronti[i][1] = 0 ;
}
for( i = 0; i < 3; i++ ) {
for( j = 0; j < 3; j++ ) {
unsigned int el = a[i][j];
unsigned int k = 0;
while ( matrice_confronti[k][0] != -1 )
if ( matrice_confronti[k][0] == el ) break;
else k++;
if ( matrice_confronti[k][0] == -1 )
matrice_confronti[k][0] = el ;
matrice_confronti[k][1] += 1 ;
}
}
//Visualizzazione la matrice dei confronti
unsigned int k = 0;
while ( matrice_confronti[k][0] != -1 ) {
printf("%d %d \n",matrice_confronti[k][0], matrice_confronti[k][1]);
k++;
}
return ( 0 ) ;
}