Lập trình C: Cách sắp xếp mảng 2 chiều

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

1. Video hướng dẫn:

2. Bài viết hướng dẫn:

///Bài toán: Hãy nhp vào mt mng d liu 2 chiu ri sp xếp
///theo trt t tăng, gim?

void nhapLieu(float arr[][50],int* soHang,int* soCot){
  int i,j;
  do{
    printf("\nMoi nhap so hang: ");
    scanf("%d",&*soHang);
  }while(!(0<*soHang && *soHang<50));
  do{
    printf("\nMoi nhap so cot: ");
    scanf("%d",&*soCot);
  }while(!(0<*soCot && *soCot<50));
  puts("\nMoi ban nhap lieu cho mang:");
  for(i=0; i<*soHang; i++){
    for(j=0; j<*soCot; j++){
      printf("\narr[%d][%d] = ",i,j);
      scanf("%f",&arr[i][j]);
    }
  }
}

void hienThi(float arr[][50],int soHang,int soCot){
  int i,j;
  puts("\nDu lieu mang:");
  for(i=0; i<soHang; i++){
    for(j=0; j<soCot; j++){
      printf("\n%g",arr[i][j]);
    }
  }
}

void sapXepTang(float arr[][50],int soHang,int soCot){
  int i,j;
  float tg;
  float mangtg[soHang*soCot];
  for(i=0; i<soHang*soCot; i++){///trước tiên cn gán các phn t    ///ca mng 2 chiu cho mng 1 chiu
    mangtg[i]=arr[i/soCot][i%soCot];
  }
  ///Sau đó tiến hành sp xếp mng 1 chiu
  for(i=0; i<soHang*soCot-1; i++){
    for(j=soHang*soCot-1; j>i; j--){
      if(mangtg[i]>mangtg[j]){
        tg=mangtg[i];
        mangtg[i]=mangtg[j];
        mangtg[j]=tg;
      }
    }
  }
  ///Cui cùng gán ngược li mng 1 chiu cho mng 2 chiu
  for(i=0; i<soHang*soCot; i++){
    arr[i/soCot][i%soCot]=mangtg[i];
  }
}

void sapXepGiam(float arr[][50],int soHang,int soCot){
  int i,j;
  float tg;
  float mangtg[soHang*soCot];
  for(i=0; i<soHang*soCot; i++){///trước tiên cn gán các phn t    ///ca mng 2 chiu cho mng 1 chiu
    mangtg[i]=arr[i/soCot][i%soCot];
  }
  ///Sau đó tiến hành sp xếp mng 1 chiu
  for(i=0; i<soHang*soCot-1; i++){
    for(j=soHang*soCot-1; j>i; j--){
      if(mangtg[i]<mangtg[j]){
        tg=mangtg[i];
        mangtg[i]=mangtg[j];
        mangtg[j]=tg;
      }
    }
  }
  ///Cui cùng gán ngược li mng 1 chiu cho mng 2 chiu
  for(i=0; i<soHang*soCot; i++){
    arr[i/soCot][i%soCot]=mangtg[i];
  }
}

main(){
  float arr[50][50];
  int soHang,soCot;
  nhapLieu(arr,&soHang,&soCot);
  sapXepTang(arr,soHang,soCot);
  puts("\nSap xep tang:");
  hienThi(arr,soHang,soCot);
  sapXepGiam(arr,soHang,soCot);
  puts("\nSap xep giam:");
  hienThi(arr,soHang,soCot);
  return 0;
}
» Tiếp: Solution bài tập cơ bản
« Trước: Kiểm tra tính chính phương
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!