Salve a tutti. Devo ordinare le righe di una matrice 4 per 4. La matrice la leggo da file, la inserisco in un array 4 per 4 e a quel punto devo ordinarla. Ora, il bubble sort studiato all'università l'avevo applicato soltanto ad array monodimensionali. Ho provato a modificarlo per un array bidimensionale, ma non funzionava. Ho cercato su internet ma non ho trovato qualcosa che mi potesse aiutare. Non so più dove sbattere la testa. Non capisco perchè non funziona, visto che è lo stesso algoritmo , ho modificato soltanto da vettore a matrice..
Qualche aiuto?
codice:
#include <stdio.h>
#define M 4
int lettura(int matrice[][M]);
void visualizza_non_ordinata(int matrice[][M], int dim);
void bubblesort(int matrice[][M], int dim);
void visualizza_ordinata(int matrice[][M], int dim);
int main(){
int i, j, dim, tmp;
int matrice[M][M];
dim=lettura(matrice);
printf("Stampa della matrice non ordinata:\n");
visualizza_non_ordinata(matrice, dim);
bubblesort(matrice, dim);
printf("\nStampa della matrice ordinata:\n");
visualizza_ordinata(matrice, dim);
}
int lettura(int matrice[][M]){
FILE *f;
int dim, i, j;
f=fopen("matrice.txt", "r");
fscanf(f, "%d", &dim);
for(i=0; i<M; i++){
for(j=0; j<M; j++){
fscanf(f, "%d", &matrice[i][j]);
}
}
fclose(f);
return dim;
}
void visualizza_non_ordinata(int matrice[][M], int dim){
int i, j;
for(i=0; i<dim; i++){
for(j=0; j<dim; j++){
printf("%d ", matrice[i][j]);
}
printf("\n");
}
}
void bubblesort(int matrice[][M], int dim){
int i, j, tmp;
for(i=dim-1; i>0; i--){
for(j=0; j<i; j++){
if(matrice[i][j]>matrice[i][j+1]){
tmp=matrice[i][j];
matrice[i][j]=matrice[i][j+1];
matrice[i][j+1]=tmp;
}
}
}
}
void visualizza_ordinata(int matrice[][M], int dim){
int i, j;
for(i=0; i<dim; i++){
for(j=0; j<dim; j++){
printf("%d ", matrice[i][j]);
}
printf("\n");
}
}