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!!!!!