Mảng hai chiều là một bảng các phần tử cùng kiểu, mảng cũng được đặt tên như mảng một chiều, các phần tử cũng được đánh chỉ số để quản lý. Tuy nhiên, mỗi phần tử của mảng hai chiều được xác định bằng bằng hai chỉ số, chúng ta tạm gọi là chí số dòng và chỉ số cột.
Trong hình các em thấy để truy xuất vào một phần tử chúng ta dùng hai chỉ số dòng và cột.
Khai báo mảng hai chiều tương tự như một chiều, chúng ta chỉ cần thêm một kích thước phía sau nữa là được.
Ví dụ:
int a[100][100]; // khai báo mảng a có 100 dòng và 100 cột
Tương tự như mảng một chiều, để nhập xuất mảng 2 chiều phải dùng 2 vòng lặp lồng nhau.
Các em quan sát ví dụ sau:
ví dụ nhập và xuất mảng 2 chiều
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
//khai bao mang 2 chieu chua duoc 10 dong 10 cot
int a[10][10];
int m,n;
cout<<"nhap so dong";
cin>>m;
cout<<"nhap so cot";
cin>>n;
cout<<"nhap cac phan tu cho ma tran: \n";
//nhap mang 2 chieu
for(int i=0; i<m; i++)
for(int j=0; j<n; j++){
cout<<"a["<<i<<"]["<<j<<"]:";
cin>>a[i][j];
}
cout<<"ma tran ban vua nhap la: \n";
//xuat mang 2 chieu
for(int i = 0; i<m; i++){
for(int j=0; j< n; j++)
cout<<setw(3)<<a[i][j];
cout<<"\n";
}
return 0;
system("pause");
}
Các thao tác trên mảng hai chiều thường liên quan đến các ứng dụng trọng đồ họa khi xử lý các điểm ảnh, hoặc các ứng dụng trong toán học cho các bài toán về ma trận, các bài toán trên đồ thị, ....
Một vài thao tác đơn giản như:
- Tìm kiếm
- Sắp xếp
- Thống kê
- Rút trích
- Thêm, xóa phần tử
- Thêm, xóa hàng cột
....
Cách truyền tương tự như mảng một chiều, nhưng ta thường để trống số dòng và ghi số cột
ví dụ:
void NhapMang( int a[][100], int m, int n){
lệnh nhập mảng
}
Như vậy khi trong chương trình chính, chúng ta khai báo
int b[100][100];
int x,y;
cin>>x>>y;
và gọi hàm:
NhapMang(b,x,y);
sau khi người dùng nhập các phần tử và thì lúc này coi như mảng b đã được nhập.