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


Đăng ký nhận thông báo về những video mới nhất

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;
}

Nếu bạn có điều thắc mắc, bạn hãy comment cho V1Study để được giải đáp.
Bài viết này được chia sẻ bởi LongDT. Nếu bạn muốn chia sẻ bài viết, bạn hãy Đăng ký làm thành viên!
« Prev
Next »
Copied !!!