Il codice per la memoria allocata dinamicamente è questo:
codice:
/*
  Alloca la memoria per una matrice di dimensione n e ne restituisce
  un puntatore.
 */
TMatrice alloca_matrice(int n)
{
  TMatrice matrice;
  int i;

  /* alloco il vettore delle righe. Ogni elemento di questo vettore è un puntatore */
  if(!(matrice = (TMatrice) malloc (n * sizeof(int *)))) {
 		fprintf(stderr,"Errore di allocazione per la matrice\n");
		return 0;
	}

 /* per ogni riga alloco le colonne */
  for (i=0; i<n; i++) {
    if(!(matrice[i] = (int *) malloc (n * sizeof(int)))) {
		fprintf(stderr,"Errore di allocazione per la i-esima posizione \"%d\"\n",i);
		return 0;
		}
   }
  return matrice;
}

/*
  Libera la memoria allocata da alloca_matrice
 */
void libera_matrice(TMatrice *matrice, int n)
{
  int i;

  for (i=0; i<n; i++)  
    free((*matrice)[i]);
  free(*matrice);
}

void inserimento(TMatrice matrice, int n){
 
 int i,j;
 
 for(i=0 ; i<n ; i++)
   for(j=0 ; j<n ; j++)
     {
       /*printf("Inserisci elemento di riga %d e colonna %d: " ,i , j);*/
       scanf("%d",&matrice[i][j]);
     }
}

void stampa_matrice(TMatrice matrice, int n){

  int i,j;

  for (i=0;i<n;i++)
    {
      for (j=0;j<n;j++)
	printf("%d ", matrice[i][j]);
      printf("\n");
    }
}
Devo scrivere una funzione per trovare uguali inseriti nella matrice, sia in orizzonatale che verticale.
Esempio
1 2 1
3 4 5
6 2 8

deve trovare gli uni in verde che sono uguali e i due rossi, in modo poi da richiamare una funzione che mi dice di non_annerire il numero che c'è trai 2 numeri uguali, in questo caso il 2 rosso stesso e il 4!!
Suggerimenti!!!!!