Bài 319: Viết hàm xếp ma trận số thực tăng dần từ xuống từ trái sang phải #include #include #include #define MAX 100 void NhapMang(float a[][MAX], int &dong, int &cot) { //Nhập số dòng { printf("\nNhap vao so dong: "); // Cách tà đạo: scanf("dong =%d",&dong); // Lúc nhập phải viết thêm scanf("%d",&dong); if(dong < || dong > MAX) { printf("\nSo dong khong hop le Xin kiem tra lai!"); } }while(dong < || dong > MAX); //Nhập số cột { chữ ( dong = ) khung console printf("\nNhap vao so cot: "); scanf("%d",&cot); if(cot < || cot > MAX) { printf("\nSo cot khong hop le Xin kiem tra lai!"); } }while(cot < || cot > MAX); for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { float temp; printf("\nNhap a[%d][%d] = ", i, j); scanf("%f", &temp); a[i][j] = temp; } } } void XuatMang(float a[][MAX], int dong, int cot) { for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { printf("%8.3f", a[i][j]); } printf("\n\n"); } } void HoanVi(float &a, float &b) { a = a + b; // Cho đại b = a - b; // a = a - b; // lấy trừ } void SapXepKhongDungMangPhu(float a[][MAX], int dong, int cot) { int n = dong * cot; for(int i = 0; i < n - 1; i++) { for(int j = i + 1; j < n; j++) { if(a[i / cot][i % cot] > a[j / cot][j % cot]) { HoanVi(a[i / cot][i % cot], a[j / cot][j % cot]); } } } } void SapXepDungMangPhu(float a[][MAX], int dong, int cot) { // Bước 1: Đổ liệu từ mảng chiều qua mảng chiều (mảng phụ) float temp[MAX]; int idx = 0; for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { temp[idx++] = a[i][j]; } } // Bước 2: Sắp xếp mảng chiều tăng dần for(int i = 0; i < idx - 1; i++) { for(int j = i + 1; j < idx; j++) { if(temp[i] > temp[j]) { HoanVi(temp[i], temp[j]); } } } // Bước 3: Đổ lại liệu từ mảng chiều sang mảng chiều idx = 0; // Reset lại số mảng phụ for(int i = 0; i < dong; i++) { for(int j = 0; j < cot; j++) { a[i][j] = temp[idx++]; } } } int main() { float a[MAX][MAX]; int dong, cot; NhapMang(a, dong, cot); XuatMang(a, dong, cot); SapXepDungMangPhu(a, dong, cot); printf("\nMang sau sap xep\n"); XuatMang(a, dong, cot); getch(); return 0; }