khóa huấn luyện Lập trình lập trình sẵn C++ khóa huấn luyện lập trình C++ căn phiên bản Mảng 2d trong C++ (Two-dimensional arrays)

Dẫn nhập

Ở bài học kinh nghiệm trước, bản thân đã chia sẻ cho chúng ta về CÁC THAO TÁC TRÊN MẢNG MỘT CHIỀU TRONGC++.

Bạn đang xem: Bài tập mảng 2 chiều trong c

Hôm nay, mình sẽ trình làng cho chúng ta về một dạng không giống của kiểu dữ liệu mảng, đó là Mảng 2 chiều (Two-dimensional arrays) trong C++.

Nội dung

Để gọi hiểu bài xích này xuất sắc nhất các bạn nên có kỹ năng cơ bản về:

Trong bài ta sẽ cùng mày mò các vấn đề:

Mảng 2d là gì?Khai báo và khởi sản xuất mảng 1 chiềuXuất các phần tử mảng 2 chiềuNhập các thành phần mảng 2 chiều

Mảng 2d là gì?

Trong bài xích MẢNG MỘT CHIỀU vào C++ (Arrays), chúng ta đã biết được mảng là 1 kiểu dữ liệu có kết cấu do fan lập trình định nghĩa, màn trình diễn một dãy những biến có cùng kiểu.

Ví dụ:

int a<5> = 6, 4, 3, 7, 2 ;

Hình dưới mô tả 1 mảng tên là a gồm kiểu int tất cả 5 thành phần (đã khởi tạo) nằm trong vùng nhớ RAM:

*

Các thành phần trong một mảng, có thể là bất kỳ kiểu dữ liệu nào, và nó cũng rất có thể là kiểu tài liệu mảng. Nếu như các thành phần trong mảng gồm kiểu tài liệu mảng, nó được call là mảng đa chiều.

Một mảng của một mảng được gọi là mảng nhiều chiều (multidimensional array).

Ví dụ mảng 2 chiều:

int a<2><3> = 6, 4, 3 , // row 1 7, 2, 8 // row 2;

Hình bên dưới mô tả mảng 2 chiều tên là a có kiểu int bao gồm 2 bộ phận (đã khởi tạo), mỗi thành phần là mảng 1 chiều 3 bộ phận (thường được điện thoại tư vấn là 2 cái 3 cột):

*

Dù mảng a2 chiều hay các chiều, nhưng thực chất khi lưu vào bộ nhớ lưu trữ RAM, nó vẫn là 1 vùng nhớ tất cả những ô nhớ tiếp tục nhau.

Khai báo và khởi tạo ra mảng 2 chiều

Khai báo mảng 2 chiều

Cú pháp:

<><>;

Lưu ý:

Phải xác định rõ ràng (hằng số) lúc khai báo.Nên sử dụng chỉ thị tiền xử lý #define để định nghĩa mảng.Tổng số phần tử = * .Bộ nhớ thực hiện = * sizeof().

Ví dụ:

int a<10><20>, b<10><20>;int c<5><10>;int d<10><20>;

Chú ý: khi một mảng chưa khởi tạo, các phần tử của mảng sẽ sở hữu giá trị rác.

Khởi chế tác giá trị mang đến mảng 2 chiều

Cách 1: Khởi chế tác giá trị mang lại mọi bộ phận của mảng

int a<2><3> = 6, 4, 3 , // row 1 7, 2, 8 // row 2;

*

Cách 2: Khởi sinh sản giá trị cho một số bộ phận đầu mảng

int a<2><3> = 6 , // row 1 7, 2, 8 // row 2;

*

Cách 3: Khởi tạo nên giá trị 0 đến mọi phần tử của mảng

int a<2><3> = ;

*

Cách 4: Tự động khẳng định số lượng phần tử

int a<><3> = 6, 4, 3 , // row 1 7, 2, 8 // row 2;

*

Không hệt như mảng 1 chiều, mảng 2 chiều không đến phép khai báo mặt dưới:

int a<><> = 6, 4, 3 , // row 1 7, 2, 8 // row 2;Cách 5: Sử dụng khởi tạo đồng điệu (uniform initialization) trong C++11 (tương tự giống như những cách trên, nhưng mà bỏ đi lốt bằng “=”)

int a<2><3> 6, 4, 3 , // row 1 7, 2, 8 // row 2;int b<2><3> 6 , // row 1 7, 2, 8 // row 2;int c<2><3> ;int d<><3> 6, 4, 3 , // row 1 7, 2, 8 // row 2;

Xuất các phần tử mảng 2 chiều

Để truy xuất quý giá của phần tử vào mảng, ta thực hiện cú pháp:

<><>;

Ví dụ: Cho mảng như sau:

int a<2><3> // 2 dòng, 3 cột

*

Các truy nã xuất:

Hợp lệ: a<0><0>, a<0><1>, …, a<1><1>, a<1><2>Không vừa lòng lệ: a<-1><0>, a<0><-1>, a<2><3>, … => cho công dụng không như mong muốn (có thể gây bị tiêu diệt chương trình).

Chú ý: lúc truy xuất 1 phần tử mảng, luôn bảo đảm chỉ số của thành phần đó là hòa hợp lệ vào phạm vi của mảng.

Ví dụ lịch trình khởi sinh sản và xuất các phần tử mảng:

#include using namespace std;#define ROW 2 // Max row#define COL 3 // Max columnint main()// khởi chế tạo ra mảng 2 dòng 3 cộtint arr 6, 4, 3 , // row 1 7, 2, 8 // row 2;// xuất cực hiếm các bộ phận mảngfor (int i = 0; i Output:

*

Chương trình trên áp dụng 2 vòng lặp for, 1 vòng lặp chạy trường đoản cú 0 cho ROW – 1 để truy cập vào từng dòng, bên trên mỗi chiếc sẽ có 1 vòng lặp chạy tự 0 cho COL – 1 để truy vấn vào từng cột.

Nhập các phần tử mảng 2 chiều

Để gán giá chỉ trị bỏ phần tử trong mảng, ta thực hiện cú pháp:

<><> = ;

Ví dụ các phép gán vừa lòng lệ:

int a<2><3>;a<0><0> = 6;a<0><1> = 4;a<0><2> = 3;a<1><0> = 7;a<1><1> = 2;a<1><2> = 8;Ví dụ các phép gán KHÔNG thích hợp lệ (gây bị tiêu diệt chương trình):

int a<2><3>;a<-1><0> = 6;a<0><-1> = 4;a<2><3> = 3;

Chú ý: khi truy cập một phần tử mảng, luôn bảo đảm chỉ số của phần tử đó là vừa lòng lệ trong phạm vi của mảng.

Ví dụ chương trình yêu mong nhập dữ liệu cho mảng 2 chiều, sau đó xuất ra màn hình:

#include using namespace std;#define ROW 100 // Max row#define COL 100 // Max columnint main()// khởi tạo thành mảng 2 loại 3 cộtint arr;int row, col;// nhập số dòng, cộtcout > row;cout > col;// nhập mảng 2 chiềucout > arr;// xuất mảng 2 chiềufor (int i = 0; i Output:

*

Ví dụ chương trình vạc sinh dữ liệu cho mảng 2 chiều, kế tiếp xuất ra màn hình:

#include #include #include using namespace std;#define ROW 100 // Max row#define COL 100 // Max columnint main(){// khởi sản xuất mảng 2 dòng 3 cộtint arr;int row, col;// khởi chế tác số ngẫu nhiênsrand(time(NULL));// nhập số dòng, cộtcout > row;cout > col;// nhập mảng 2 chiềufor (int i = 0; i Output:

*

Kết luận

Qua bài học này, bạn đã biết được khái niệm và biện pháp sử Mảng 2 chiều (Two-dimensional arrays) trong C++. Mảng 2 chiều được sử dụng khá phổ cập trong lập trình, nó được áp dụng vào các bài toán vật thị, hoặc những trò chơi như game caro, cờ vua, …

Trong bài xích tiếp theo, bản thân sẽ trình làng cho chúng ta CÁC THAO TÁC TRÊN MẢNG 2 CHIỀUtrong C++.

Cảm ơn chúng ta đã theo dõi bài viết. Hãy nhằm lại phản hồi hoặc góp ý của mình để vạc triển bài viết tốt hơn. Đừng quên “Luyện tập – thách thức – không lo ngại khó”.

Xem thêm: Giải Bài Tập Vật Lý 10 Bài 2 Vật Lí 10: Chuyển Động Thẳng Đều

Thảo luận

Nếu các bạn có ngẫu nhiên khó khăn hay vướng mắc gì về khóa học, đừng rụt rè đặt thắc mắc trong phần BÌNH LUẬN dưới hoặc trong mục HỎI & ĐÁP trên thư viện hijadobravoda.com.com để nhận được sự hỗ trợ từ cộng đồng.