PDA

Visualizza la versione completa : [C] Trovare valori uguali inseriti all'interno di una matrice


garfa
22-06-2009, 16:23
Il codice per la memoria allocata dinamicamente č questo:


/*
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!!!!! :confused:

garfa
22-06-2009, 16:44
Cosė funziona :zizi: :



void panino_imbottitorighe(TMatrice matrice, int n) {

int i,j;
for (i=0; i<n; i++)
for(j=0; (j+2)<n; j++)
if(matrice[i][j] == matrice[i][j+2]) /* controlla se i valori inseriti sono uguali sulle righe*/
printf("Ho trovato valori uguali\n");
else
printf("I Valori sono diversi\n");
}


void panino_imbottitocolonne(TMatrice matrice, int n){

int i,j;
for(j=0; j<n; j++)
for(i=0;(i+2)<n;i++)
if(matrice[i][j] == matrice[i+2][j]) /* controlla se i valori inseriti sono uguali sulle colonne*/
printf("Ho trovato valori uguali\n");
else
printf("I Valori sono diversi\n");
}


ma secondo voi č pių veloce fare 2 funzioni cosė separate o una unica, o non cambia niente!!??

Loading