#include <stdio.h> #include <stdlib.h> #define MAX 100 void leggiMatrice(int mat[MAX][MAX], int *r, int *c); void stampaMatrice(int mat[MAX][MAX], int r, int c); void contaValori(int mat[MAX][MAX], int vet[MAX*MAX], int r, int c, int *ValoriDiversi); struct terna { int elemento; int numOccorrenze; int mat[MAX*MAX][2]; }; //struct terna VettoreDiTerne[MAX*MAX]; int main() { struct terna VettoreDiTerne[10]; int r = 0; int c = 0; int mat[MAX][MAX]; leggiMatrice(mat,&r,&c); stampaMatrice(mat,r,c); int ValoriDiversi = 0; int vet[MAX*MAX]; contaValori(mat, vet, r, c, &ValoriDiversi); int occorrenze = 0; for (int k=0; k<ValoriDiversi; k++){ VettoreDiTerne[k].elemento = vet[k]; occorrenze = 0; for(int i=0; i<r; i++){ for (int j=0; j<c; j++){ if(VettoreDiTerne[k].elemento == mat[i][j]) { VettoreDiTerne[k].mat[occorrenze][0] = i; VettoreDiTerne[k].mat[occorrenze][1] = j; occorrenze++; } } } VettoreDiTerne[k].numOccorrenze = occorrenze; } for(int i=0; i< ValoriDiversi; i++){ printf("\n"); printf("Il valore %d esiste %d volte\n", VettoreDiTerne[i].elemento, VettoreDiTerne[i].numOccorrenze); printf("Le posizioni nella quale e' presente sono:\n"); for(int j=0;j<VettoreDiTerne[i].numOccorrenze; j++){ printf("\n[%d][%d]", VettoreDiTerne[i].mat[j][0],VettoreDiTerne[i].mat[j][1]); } } } void leggiMatrice(int mat[MAX][MAX], int *r, int *c){ printf("Inserisci, per piacere, il numero di righe"); scanf("%d",r); printf("Inserisci, per piacere, il numero di colonne"); scanf("%d",c); for(int i=0; i<*r; i++){ for(int j=0; j<*c; j++){ printf("Inserisci l'elemento di posto [%d][%d]", i+1,j+1); scanf("%d", &mat[i][j]); } } } void stampaMatrice(int mat[MAX][MAX], int r, int c){ for(int i=0; i<r; i++){ printf("\n"); for(int j=0; j<c; j++){ printf(" %d ", mat[i][j]); } } } void contaValori(int mat[MAX][MAX], int vet[MAX*MAX], int r, int c, int *ValoriDiversi){ *ValoriDiversi=0; int trovato = 1; for(int i=0; i<r; i++){ for(int j=0; j<c; j++){ trovato = 1; for(int k=0; k<*ValoriDiversi; k++){ if(mat[i][j] == vet[k]){ trovato = 0; } } if(trovato == 1){ vet[*ValoriDiversi] = mat[i][j]; *ValoriDiversi = *ValoriDiversi +1; } } } }