prova questo...
codice:
#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;
}
cambia le 2 define se vuoi matrici piu grandi