Cú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: sốCú pháp N1, N2: số
Trường Đại Học Tôn Đức Thắng Khoa Công nghệ thông tin Bộ môn Khoa học máy tính LẬP TRÌNH C ThS Nguyễn Văn Tân nvtan@it.tdt.edu.vn Chương 8: Mảng hai chiều 19/05/2014 Chương 8: Mảng hai chiều Nội dung 19/05/2014 Khái niệm Khai báo Truy xuất liệu kiểu mảng Một số toán mảng chiều Chương 8: Mảng hai chiều Ma Trận … n-1 0 m-1 19/05/2014 n-1 An … … Am,n … n-1 Chương 8: Mảng hai chiều Ma Trận … n-1 0 … … n-1 n-1 … dòng > cột n-1 0 … n-1 dòng < cột n-1 0 … n-1 … … … n-1 n-1 n-1 dòng + cột = n-1 … n-1 19/05/2014 n-1 dòng = cột An … … An dòng + cột > n-1 dòng + cột < n-1 Chương 8: Mảng hai chiều Khai báo kiểu mảng chiều Cú pháp typedef [][]; N1, N2: số lượng phần tử chiều Ví dụ typedef int MaTran[3][4]; Kiểu MaTran 19/05/2014 Chương 8: Mảng hai chiều Khai báo biến mảng chiều Cú pháp Tường minh [][]; Không tường minh (thông qua kiểu) typedef [][]; ; , ; 19/05/2014 Chương 8: Mảng hai chiều Khai báo biến mảng chiều Ví dụ Tường minh int a[10][20], b[10][20]; int c[5][10]; int d[10][20]; Không tường minh (thông qua kiểu) typedef int MaTran10x20[10][20]; typedef int MaTran5x10[5][10]; MaTran10x20 a, b; MaTran11x11 c; MaTran10x20 d; 19/05/2014 Chương 8: Mảng hai chiều Truy xuất đến phần tử Thông qua số [][] Ví dụ Cho mảng chiều sau int a[3][4]; Các truy xuất • • 19/05/2014 Hợp lệ: a[0][0], a[0][1], …, a[2][2], a[2][3] Không hợp lệ: a[-1][0], a[2][4], a[3][3] Chương 8: Mảng hai chiều Gán liệu kiểu mảng Không sử dụng phép gán thông thường mà phải gán trực tiếp phần tử = ; //sai [][giá trị cs2] = ; Ví dụ int a[5][10], b[5][10]; b = a; // Sai int i, j; for (i = 0; i < 5; i++) for (j = 0; j < 10; j++) b[i][j] = a[i][j]; 19/05/2014 Chương 8: Mảng hai chiều Truyền mảng cho hàm Truyền mảng cho hàm Tham số kiểu mảng khai báo hàm giống khai báo biến mảng void NhapMaTran(int a[50][100]); Tham số kiểu mảng truyền cho hàm địa phần tử mảng • • Có thể bỏ số lượng phần tử chiều thứ trỏ Mảng thay đổi nội dung sau thực hàm void NhapMaTran(int a[][100]); void NhapMaTran(int (*a)[100]); 19/05/2014 Chương 8: Mảng hai chiều 10 Tìm kiếm phần tử Ma Trận Yêu cầu Tìm xem phần tử x có nằm ma trận a kích thước mxn hay không? Ý tưởng Duyệt phần ma trận a Nếu phần tử xét x trả có (1), ngược lại trả khơng có (0) 19/05/2014 Chương 8: Mảng hai chiều 19 Hàm Tìm Kiếm int TimKiem(int a[][MAXC], int m, int n, int x) { int i, j; for (i=0; i