Khai báo mảng 2 chiều trong c

     
khóa huấn luyện Lập trình thiết kế C++ khóa đào tạo và huấn luyện lập trình C++ căn bạn dạng 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: Khai báo 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 2d (Two-dimensional arrays) vào C++.

Nội dung

Để phát âm hiểu bài này xuất sắc nhất các bạn nên có kiến thức cơ bạn dạng về:

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

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

Mảng 2d là gì?

Trong bài 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ó cấu trúc do người lập trình định nghĩa, màn trình diễn một dãy các biến bao gồm 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 tất cả kiểu int gồm 5 thành phần (đã khởi tạo) nằm trong vùng nhớ RAM:

*

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

Một mảng của một mảng được call 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 thương hiệu là a gồm kiểu int tất cả 2 thành phần (đã khởi tạo), mỗi bộ phận là mảng một chiều 3 phần tử (thường được điện thoại tư vấn là 2 cái 3 cột):

*

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

Khai báo với khởi chế tác mảng 2 chiều

Khai báo mảng 2 chiều

Cú pháp:

<><>;

Lưu ý:

Phải xác định cụ thể (hằng số) lúc khai báo.Nên sử dụng thông tư tiền cách xử lý #define để tư tưởng 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ẽ với giá trị rác.

Xem thêm: Why Education Is More Important Now Than Ever Before &Mdash; The Foundation For Tomorrow

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

Cách 1: Khởi chế tạo ra giá trị cho 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 chế tác 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 ra giá trị 0 mang lại mọi phần tử của mảng

int a<2><3> = ;

*

Cách 4: Tự động xác minh số lượng phần tử

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

*

Không giống hệt như mảng 1 chiều, mảng 2 chiều không mang lại 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 bộ (uniform initialization) trong C++11 (tương tự như các cách trên, nhưng lại 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ý hiếm của phần tử vào mảng, ta áp dụng cú pháp:

<><>;

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

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

*

Các truy vấn xuất:

Hợp lệ: a<0><0>, a<0><1>, …, a<1><1>, a<1><2>Không thích hợp 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ú ý: khi truy xuất 1 phần tử mảng, luôn đảm bảo chỉ số của thành phần đó là vừa lòng lệ trong phạm vi của mảng.

Ví dụ lịch trình khởi chế tạo và xuất các thành phần mảng:

#include using namespace std;#define ROW 2 // Max row#define COL 3 // Max columnint main()// khởi tạo nên mảng 2 cái 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 thực hiện 2 vòng lặp for, 1 vòng lặp chạy từ bỏ 0 mang đến ROW – 1 để truy cập vào từng dòng, bên trên mỗi dòng sẽ có 1 vòng lặp chạy tự 0 mang lại COL – 1 để truy cập vào từng cột.

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

Để gán giá trị cho chỗ tử vào mảng, ta sử dụng cú pháp:

<><> = ;

Ví dụ những 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 hòa 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ú ý: lúc truy cập một phần tử mảng, luôn đảm bảo chỉ số của thành phần đó là phù hợp 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 nên mảng 2 dòng 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 phân phát 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 tạo thành mảng 2 dòng 3 cộtint arr;int row, col;// khởi chế tạo ra 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 kinh nghiệm này, chúng ta đã hiểu rằng khái niệm và giải pháp sử Mảng 2d (Two-dimensional arrays) vào C++. Mảng 2 chiều được áp dụng khá thịnh hành trong lập trình, nó được vận dụng vào các bài toán vật thị, hoặc các trò nghịch như trò chơi caro, cờ vua, …

Trong bài bác tiếp theo, bản thân sẽ giới thiệu cho các bạn CÁC THAO TÁC TRÊN MẢNG 2 CHIỀUtrong C++.

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

Xem thêm: Iphone X Có Chống Nước Hay Không, Sử Dụng Dưới Mưa Có Làm Sao Không

Thảo luận

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