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


Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

1. Video hướng dẫn:

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

///Bài toán: Hãy nhập vào một mảng dữ liệu 2 chiều rồi sắp xếp
///theo trật tự tăng, giảm?

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 cần gán các phần tử
    ///của mảng 2 chiều cho mảng 1 chiều
    mangtg[i]=arr[i/soCot][i%soCot];
  }
  ///Sau đó tiến hành sắp xếp mảng 1 chiều
  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;
      }
    }
  }
  ///Cuối cùng gán ngược lại mảng 1 chiều cho mảng 2 chiều
  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 cần gán các phần tử
    ///của mảng 2 chiều cho mảng 1 chiều
    mangtg[i]=arr[i/soCot][i%soCot];
  }
  ///Sau đó tiến hành sắp xếp mảng 1 chiều
  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;
      }
    }
  }
  ///Cuối cùng gán ngược lại mảng 1 chiều cho mảng 2 chiều
  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
Khóa học qua video:
Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!