VC
&
BB
11
Nội dung
NMLT - Mảng hai chiều
Khái niệm1
Khai báo2
Truy xuất dữ liệu kiểu mảng3
Một số bài toán trên mảng 2 chiều4
VC
&
BB
22
Ma Trận
NMLT - Mảng hai chiều
0
…
m-1
0 1 … n-1
A
m,n
0
…
n-1
A
n
0 … n-1
VC
&
BB
…
n-1
0 … n-1
dòng + cột = n-1
dòng + cột > n-1 dòng + cột < n-1
VC
&
BB
44
Khai báo kiểu mảng 2 chiều
Cú pháp
N1, N2: số lượng phần tử mỗi chiều
Ví dụ
NMLT - Mảng hai chiều
typedef <kiểu cơ sở> <tên kiểu>[<N1>][<N2>];
typedef int MaTran[3][4];
0
1
2
0 1 2 3
Kiểu MaTran
VC
&
BB
55
Khai báo biến mảng 2 chiều
VC
&
BB
77
Truy xuất đến một phần tử
Thông qua chỉ số
Ví dụ
Cho mảng 2 chiều như sau
Các truy xuất
•
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]
NMLT - Mảng hai chiều
<tên biến mảng>[<giá trị cs1>][<giá trị cs2>]
int a[3][4];
0
1
2
0 1 2 3
VC
&
BB
88
Gán dữ liệu kiểu mảng
void NhapMaTran(int a[][100]);
void NhapMaTran(int (*a)[100]);
VC
&
BB
1010
Truyền mảng cho hàm
Truyền mảng cho hàm
Số lượng phần tử thực sự truyền qua biến khác
Lời gọi hàm
NMLT - Mảng hai chiều
void XuatMaTran(int a[50][100], int m, int n);
void XuatMaTran(int a[][100], int m, int n);
void XuatMaTran(int (*a)[100], int m, int n);
void NhapMaTran(int a[][100], int &m, int &n);
void XuatMaTran(int a[][100], int m, int n);
void main()
{
int a[50][100], m, n;
NhapMaTran(a, m, n);
XuatMaTran(a, m, n);
}
VC
&
BB
1111
Một số bài toán cơ bản
Hàm int LaSNT(int n): kiểm tra một số có phải
là số nguyên tố. Trả về 1 nếu n là số nguyên
tố, ngược lại trả về 0.
NMLT - Mảng hai chiều
#define MAXD 50
#define MAXC 100