prova questo...
cambia le 2 define se vuoi matrici piu grandicodice:#include<stdio.h> #include<stdlib.h> #define DIM_R 3 //numero righe #define DIM_C 3 //numero colonne int * bubble(int a[], int n); //bubble_sort generico void copy_new(int a[][DIM_C], int app[], int column); //copia un vettore nel colonna column della matrice a int main(void){ srand(time(NULL)); int matrix[DIM_R][DIM_C]; int i, j, z; int *app; app=calloc(DIM_R, sizeof(int)); /*INIZIALIZZO LA MATRICE CON NUMERI A CASO E LA STAMPO*/ for(i=0;i<DIM_R;i++) for(j=0;j<DIM_C;j++) matrix[i][j]=rand()%DIM_R+1; for(i=0;i<DIM_R;i++){ printf("\n"); for(j=0;j<DIM_C;j++)printf("%d ", matrix[i][j]); }printf("\n\n"); /*------------------------------------------*/ for(j=0;j<DIM_C;j++){ for(i=0;i<DIM_R;i++){app[i]=matrix[i][j];} //carico in un vettore temporaneo una colonna app=bubble(app, DIM_R); //ordino il vettore appena ottenuto copy_new(matrix, app, j); //e lo copio nella colonna j della matrice } /*STAMPO LA MATRICE ORDINATA*/ for(z=0;z<DIM_R;z++){ printf("\n"); for(j=0;j<DIM_C;j++)printf("%d ", matrix[z][j]); }printf("\n\n"); /*--------------------------------*/ free(app); printf("\n"); system("pause"); return 0; } void copy_new(int a[][DIM_C], int app[], int column){ int i; for(i=0;i<DIM_R;i++){ a[i][column]=app[i]; } } int * bubble(int a[], int n){ int i, j, tmp; for(i=1;i<n;i++){ for(j=1;j<n-i+1;j++){ if(a[j-1]>a[j]){ tmp=a[j-1]; a[j-1]=a[j]; a[j]=tmp; } } } return a; }![]()

Rispondi quotando