#include <stdio.h> #define N_MAX 10 #define N_MAX2 100 void leggi_matrice(int mat[N_MAX][N_MAX], int indice[N_MAX2][2], int* n, int* m); int inserisci(int mat[N_MAX][N_MAX], int indice[N_MAX2][2],int i, int j, int ele); void cerca_indice( int indice[N_MAX2][2], int ele,int* i, int* j); void cerca(int mat[N_MAX][N_MAX], int ele, int* i, int* j, int n ,int m); void salva_file(int mat[N_MAX][N_MAX], int indice[N_MAX2][2]); int main() { int mat[N_MAX][N_MAX]; int indice[N_MAX2][2]; int n,m; int posi, posj; for(int i=0;i<N_MAX2;i++) { indice[i][0]=-1; indice[i][1]=-1; } leggi_matrice(mat,indice,&n,&m); cerca_indice(indice,3,&posi,&posj); printf("posi=%d, posj=%d\n", posi, posj); cerca(mat,30,&posi,&posj,n,m); printf("posi=%d, posj=%d\n", posi, posj); salva_file(mat,indice); } int inserisci(int mat[N_MAX][N_MAX], int indice[N_MAX2][2],int i, int j, int ele) { if(indice[ele][0]==-1){ mat[i][j]=ele; indice[ele][0]=i; indice[ele][1]=j; return 1; } else return -1; } void leggi_matrice(int mat[N_MAX][N_MAX], int indice[N_MAX2][2], int* n, int* m) { int ele; scanf("%d",n); scanf("%d",m); for(int i=0;i<*n;i++) for(int j=0;j<*m;j++) { do{ scanf("%d",&ele); } while(inserisci(mat, indice,i, j, ele)<0); } } void cerca_indice( int indice[N_MAX2][2], int ele,int* i, int* j) { *i=indice[ele][0]; *j=indice[ele][1]; } void cerca(int mat[N_MAX][N_MAX], int ele, int* i, int* j, int n, int m) { int k,l; k=0; *i=-1; *j=-1; while(k<n && *i<0) { l=0; while(l<m && *i<0) { if(mat[k][l]==ele) {*i=k;*j=l;}; l++; } k++; } } void salva_file(int mat[N_MAX][N_MAX], int indice[N_MAX2][2]){ FILE * fp; fp = fopen("matrici.bin","w"); if (fp>0) { fwrite(mat, sizeof(int),N_MAX2,fp); fwrite(indice, sizeof(int),2*N_MAX2,fp); fclose(fp); } }