Bài 2: MẢNG 2 CHIỀU 1 Mảng 2 chiều Là dãy các phần tử có cùng kiểu dữ liệu, có tính thứ tự Mỗi phần tử xác định qua 2 chỉ số Khai báo Kiểu Tên mảng[số dòng tối đa][số cột tối đa]; 2 Mảng 2 chiều Mỗi phần tử của mảng là một mảng khác VD: Ma trận 2 4 0 5 1 3 8 6 9 2 7 4 3 Ví dụ Mảng các số nguyên 2 4 0 5 1 3 8 6 9 2 7 4 Mảng các số thực 2.1 4.4 0 5 1 3.3 8 6 9.9 2 7.2 4 4 Mảng 2 chiều VD: int a[5][5]; Cột 0 1 2 3 4 Hàng 0 a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] 1 a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] 2 a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] 3 a[3][0] a[3][1] a[3][2] a[3][3] a[3][4] 4 a[4][0] a[4][1] a[4][2] a[4][3] a[4][4] 5 Mảng 2 chiều Truy xuất phần tử của mảng Tên_mảng[chỉ số dòng][chỉ số cột] Truyền mảng 2 chiều cho hàm Kiểu Tên mảng[ ][số pt chiều 2] 6 Các thao tác Nhập, xuất mảng Tính tổng TBC toàn bộ mảng Tính tổng/đếm/TBC/Liệt kê các phần tử thỏa điều kiện Xử lý 1 dòng/cột trong mảng Tính tổng dòng i (i tùy ý do người dùng chọn) Tìm phần tử thỏa điều kiện trên dòng i … 7 Nhập, xuất mảng 2 chiều VD: Nhập ma trận gồm m dòng, n cột void NhapMang(int a[][100], int &d, int &c) { //nhập số dòng, số cột printf(“Nhap so dong va cot”); scanf(“%d%d”, &d, &c); //nhập giá trị cho từng phần tử trong mảng 2 chiều for(int i=0; i<d; i++) for(int j=0; j<c; j++) { printf(“a[%d][%d]=“,I,j ); scanf(“%d”, &a[i][j]); } } 8 Xuất mảng 9 Bài tập Sách giáo trình/ trang 40 Viết chương trình thực hiện Nhập ma trận gồm d dòng và c cột (d, c nhập từ bàn phím Xuất ma trận Tính tổng các phần tử của ma trân Tính TBC Tính TBC các phần tử dương Tìm phần tử lớn nhất 10 Mảng vuông (ma trận vuông) Ma trận vuông cấp n là mảng 2 chiều có số dòng = số cột = n. 1. Sinh ma trận vuông cấp n chứa số nguyên 2. Xuất ma trận 3. Liệt kê các phần tử trên đường chéo chính/ chéo phụ 4. Tính tổng phần tử nằm trên dòng thứ k (k nhập) 5. Tính tổng các phần tử nằm trên đường biên 6. Tính tổng các phần tử trên mỗi dòng 7. Xuất ra các dòng có tổng lớn nhất 11 12 13