Viết hàm sắp xếp ma trận các số thực tăng dần từ trên xuống dưới và từ trái sang phải

5 7.9K 74
Viết hàm sắp xếp ma trận các số thực tăng dần từ trên xuống dưới và từ trái sang phải

Đang tải... (xem toàn văn)

Thông tin tài liệu

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

Ngày đăng: 20/10/2016, 21:09

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan