Chúng ta đã thảo luận qua về mảng 1 chiều trong C++. Mặt khác, nếu chúng ta muốn lưu trữ dữ liệu dưới dạng bảng, chẳng hạn như bảng có hàng và cột, chúng ta cần làm quen với mảng đa chiều. Mảng nhiều chiều về cơ bản là một mảng gồm nhiều mảng.
Chúng ta sẽ chỉ bàn về mảng 2 chiều trong phần này.Một ví dụ gần với thực tế:
Chúng ta có danh sách 4 phim khác nhau. Và các phim đó đều có 4 tổ chức khác nhau đánh giá xếp hạng. Tổng hợp các thông tin đó cần được lưu trữ trong một bảng 2 chiều. Hình bên dưới cho ta một cái nhìn tổng quan về thông tin đánh giá các phim được lưu trữ ra sao
Ví dụ ta có thể truy cập mảng trên, ví dụ tên là danhGiaPhim
danhGiaPhim[0][2] = 2 //Tổ chức đánh giá sô 0 cho phim số 2 điểm 2
danhGiaPhim[1][3] = 7//Tổ chức đánh giá sô 1 cho phim số 3 điểm 7
Để truy cập các phần tử trong mảng 2 chiều ta thông qua chỉ số hàng và cột được đánh số từ 0
Chú ý để truy cập vào phần tử trong mảng 2 chiều ta luôn dùng chỉ số hàng (row) trước, chỉ số cột (column) sau
Cú pháp khai báo : Data_type array_name[rows][cols];
Data_type : Kiểu dữ liệu của phần tử trong mảng như int, float, char, double..
array_name : Tên mảng 2 chiều
rows : Số hàng của mảng 2 chiều
cols : Số cột của mảng 2 chiều
Ví dụ khởi tạo mảng 2 chiều. Mảng có 2 hàng (rows) và 3 cột (column)
int maTran[2][3] = { {1, 4, 2}, {3, 6, 8} };
Hàng thứ nhất có các phần tử 1 4 2
Hàng thứ hai có các phần tử 3 6 8
Đây là ví dụ truy xuất các phần tử trong mảng 2 chiều. Bạn sử dụng IDE Online để chạy thử:
#include <iostream>
using namespace std;
int main(){
int maTran[2][3] = { {1, 4, 2}, {3, 6, 8} };
cout <<"Phần tử [0][2]:"<< maTran[0][2] << endl;
return 0;
}
Kết quả:
Để in ra mảng 2 chiều bạn dùng 2 vòng lặp lồng nhau, vòng lặp ngoài duyệt qua hàng, vòng for trong duyệt qua từng cột của hàng. Đây là ví dụ, bạn sử dụng IDE Online để chạy thử, nên thử với số nhỏ ví dụ 2 2 :
#include <iostream>
using namespace std;
int main(){
int n, m; // n : hàng, m : cot
int a[205][205]; // 205 x 205
cout <<"Nhap số hàng cột (Nhập số hàng trước cách một khoảng trắng nhập số cột, ví dụ 2 2 : "<< endl;
cin>> n >> m;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << "a["<< i << "]" << "["<< j<<"]="<< endl;
cin >> a[i][j];
}
}
cout << "Mảng vừa nhập :" << endl;
for(int i = 0; i < n; i++){ // Vòng lặp này sẽ duyệt qua hàng
for(int j = 0; j < m; j++){ // Vòng lặp này sẽ duyệt qua cột
cout << a[i][j];
}
cout << endl;
}
return 0;
}
Kết quả :
Không có nhận xét nào:
Đăng nhận xét