Lập Trình C: Mảng Hai Chiều

Trong C ++, chúng ta có thể định nghĩa các mảng đa chiều đơn giản là mảng của một mảng.Dữ liệu trong các mảng đa chiều được lưu trữ ở dạng bảng (theo thứ tự chính hàng)

Thao tác và ví dụ với Mảng 2 chiều

Ví dụ:

int x<3><4>;Trong ví dụ trên,xlà một mảng hai chiều.Nó có thể chứa tối đa 12 yếu tố.

Bạn đang xem: Lập trình c: mảng hai chiều

Chúng ta có thể nghĩ mảng này là một bảng có 3 hàng và mỗi hàng có 4 cột như hình bên dưới.

*

Các phần tử trong mảng hai chiều trong Lập trình C ++

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

Đểtruy xuất giá trị của phần tửtrong mảng, ta sử dụngcú pháp:

<><>;

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

int a<2><3> // 2 dòng, 3 cột​Các truy xuất:

Hợp lệ:a<0><0>, a<0><1>, …, a<1><1>, a<1><2>Không hợp lệ:a<-1><0>, a<0><-1>, a<2><3>, … => cho kết quả không như mong muốn (có thể gây chết chương trình).

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

1.Nhập và xuất mảng 2 chiều

Bên dưới là ví dụ về nhập, xuất dữ liệu cho mảng:

#include #include // for srand() and rand()#include // for time()using namespace std;// định nghĩa số phần tử mảng#define ROW 100#define COL 100// khai báo prototypevoid nhapMang(int mt<>, int &m, int &n);void xuatMang(int mt<>, int m, int n);int main(){int mt; // mảng myArray có MAX phần tửint nRow, nCol; // số phần tử dòng và cột được sử dụng// nhập xuất mảng tự độngnhapMang(mt, nRow, nCol);xuatMang(mt, nRow, nCol);return 0;}// hàm nhập mảngvoid nhapMang(int mt<>, int &m, int &n){// khởi tạo số ngẫu nhiênsrand(time(NULL));cout > m;cout > n;// khởi tạo mảng ngẫu nhiên từ <0><0> đến .for (int i = 0; i

Output:

Nhap so dong : 2Nhap so cot : 3616346379240

2.Tính tổng các phần tử trong mảng

Yêu cầu:cho trước ma trậnmt, kích thướcmxn. Tính tổng các phần tử trên dòngd, cộtc.

Ý tưởng:duyệt ma trận và cộng dồn các phần tử có tọa độ (dòng, cột) thỏa yêu cầu.

#include #include // for srand() and rand()#include // for time()using namespace std;// định nghĩa số phần tử mảng#define ROW 100#define COL 100// khai báo prototypevoid nhapMang(int mt<>, int &m, int &n);void xuatMang(int mt<>, int m, int n);int tongDong(int mt<>, int n, int d);int tongCot(int mt<>, int m, int c);int main(){int mt; // mảng myArray có MAX phần tửint nRow, nCol; // số phần tử dòng và cột được sử dụng// nhập xuất mảng tự độngnhapMang(mt, nRow, nCol);xuatMang(mt, nRow, nCol);// tính tổng dòng d, cột cint d;cout > d;cout > c;cout > m;cout > n;// khởi tạo mảng ngẫu nhiên từ <0><0> đến .for (int i = 0; i Ouput

Nhap so dong : 2Nhap so cot : 3834014472265Nhap dong can tinh tong: 1Tong dong: 134Nhap dong can tinh tong: 2Tong dong: 79

3.Tìm giá trị lớn nhất của mảng 2 chiều

Yêu cầu:Cho trước ma trậnmt, kích thướcmxn. Tìm giá trị lớn nhất trong ma trậnmt(gọi làmax)

Ý tưởng:

Giả sử giá trịmaxhiện tại là giá trị phần tử đầu tiênmt<0><0>Lần lượt kiểm tra các phần tử còn lại để cập nhậtmax.

#include #include // for srand() and rand()#include // for time()using namespace std;// định nghĩa số phần tử mảng#define ROW 100#define COL 100// khai báo prototypevoid nhapMang(int mt<>, int &m, int &n);void xuatMang(int mt<>, int m, int n);int timMax(int mt<>, int m, int n);int main(){int mt; // mảng myArray có MAX phần tửint nRow, nCol; // số phần tử dòng và cột được sử dụng// nhập xuất mảng tự độngnhapMang(mt, nRow, nCol);xuatMang(mt, nRow, nCol);// tìm maxint max = timMax(mt, nRow, nCol);cout > m;cout > n;// khởi tạo mảng ngẫu nhiên từ <0><0> đến .for (int i = 0; i max)max = mt;return max;}Ouput:Nhap so dong : 2Nhap so cot : 3253741955353Max = 95

Thao tác với mảng đa chiều

1. Mảng đa chiều hoạt động như thế nào?

Mảng ba chiều cũng hoạt động theo cách tương tự như mảng hai chiều .Ví dụ:

float x<2><4><3>;Trong mảng này, xcó thể chứa tối đa 24 yếu tố.

Chúng ta có thể tìm ra tổng số phần tử trong mảng chỉ bằng cách nhân kích thước của nó:

2 x 4 x 3 = 24

2. Kích thước của các mảng đa chiều

Tổng số phần tử có thể được lưu trữ trong một mảng nhiều chiều có thể được tính bằng cách nhân kích thước của tất cả các kích thước.Ví dụ:Mảngint x <10> <20>có thể lưu trữ tổng (10 * 20) = 200 phần tử.Tương tự mảngint x <5> <10> <20>có thể lưu trữ tổng (5 * 10 * 20) = 1000 phần tử.

3. Khởi tạo mảng nhiều chiều

Giống như một mảng bình thường, chúng ta có thể khởi tạo một mảng nhiều chiều theo nhiều cách.

Xem thêm: Cách Ghi Chú Trên File Pdf Bằng Foxit Reader, Cách Tạo Ghi Chú Trong File Pdf

Mảng hai chiều là hình thức đơn giản nhất của mảng đa chiều.Chúng ta có thể thấy một mảng hai chiều là mảng của mảng một chiều để dễ hiểu hơn.

Hình thức cơ bản của khai báo mảng hai chiều có kích thước x, y:Cú pháp:

; Kiểu dữ liệu : Loại dữ liệu sẽ được lưu trữ. Kiểu dữ liệu hợp lệ trong C++Chúng ta có thể khai báo một mảng số nguyên hai chiều có kích thước "x" có kích thước 10,20 là:int x <10> <20>;Các phần tử trong mảng hai chiều thường được gọi bằng x trong đó i là số hàng và "j" là số cột.Một mảng hai chiều có thể được xem như một bảng có các cột "x" và "y" trong đó số hàng nằm trong khoảng từ 0 đến (x-1) và số cột nằm trong khoảng từ 0 đến (y-1).Mảng hai chiều "x" với 3 hàng và 3 cột được hiển thị bên dưới

*

Có 02 cách để khởi tạo một mảng hai chiều :

1. Phương pháp đầu tiên:

int test<2><3> = {2, 4, 5, 9, 0, 19};Phương pháp trên không được ưa thích.Một cách tốt hơn để khởi tạo mảng này với các phần tử mảng tương tự được đưa ra dưới đây.2. Phương pháp tốt hơn :int test<2><3> = { {2, 4, 5}, {9, 0, 19}};Mảng này có 2 hàng và 3 cột, đó là lý do tại sao chúng ta có hai hàng phần tử với 3 phần tử mỗi phần.

*

Khởi tạo mảng ba chiều

int test<2><3><4> = {3, 4, 2, 3, 0, -3, 9, 11, 23, 12, 23, 2, 13, 4, 56, 3, 5, 9, 3, 5, 5, 1, 4, 9};Đây chưa phải là một cách tốt để khởi tạo một mảng ba chiều.Một cách tốt hơn để khởi tạo mảng này là:

int test<2><3><4> = { { {3, 4, 2, 3}, {0, -3, 9, 11}, {23, 12, 23, 2} }, { {13, 4, 56, 3}, {5, 9, 3, 5}, {3, 1, 4, 9} } };Truy cập các phần tử trong mảng ba chiều: Truy cập các phần tử trong mảng ba chiều cũng tương tự như các phần tử mảng hai chiều.

Ví dụ 1: Mảng hai chiều

// C++ Program to display all elements// of an initialised two dimensional array#include using namespace std;int main() { int test<3><2> = {{2, -5}, {4, 0}, {9, 1}}; // sử dụng vòng lặp lồng nhau // truy cập các hàng của mảng for (int i = 0; i Ouput:test<0><0> = 2test<0><1> = -5test<1><0> = 4test<1><1> = 0test<2><0> = 9test<2><1> = 1Trong ví dụ trên, ta đã khởi tạo mộtintmảnghai chiềucó tên testcó 3 "hàng" và 2 "cột".

Ở đây, ta đã sử dụngforvòng lặplồng nhauđể hiển thị các phần tử mảng.

vòng lặp bên ngoài từi = 0đểi = 2truy cập vào các hàng của mảngvòng lặp bên trong từj = 0đểj = 1truy cập các cột của mảng

Cuối cùng, ta sẽ in các phần tử mảng trong mỗi lần lặp.

Ví dụ 2: Mảng ba chiều

// C++ Program to Store value entered by user in// three dimensional array and display it.#include using namespace std;int main() { // Mảng này có thể lưu trữ tối đa 12 phần tử (2x3x2) int test<2><3><2> = { { {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } }; for (int i = 0; i Ouput

test<0><0><0> = 1test<0><0><1> = 2test<0><1><0> = 3test<0><1><1> = 4test<0><2><0> = 5test<0><2><1> = 6test<1><0><0> = 7test<1><0><1> = 8test<1><1><0> = 9test<1><1><1> = 10test<1><2><0> = 11test<1><2><1> = 12Khái niệm cơ bản về các yếu tố in của mảng 3 chiều tương tự như mảng 2 chiều.

Tuy nhiên, vì ta đang thao tác 3 chiều nên ta phải sử dụng vòng lặp lồng nhau với 3 vòng thay vì chỉ 2 vòng.

Kết

Như chúng ta có thể thấy, độ phức tạp của mảng tăng theo cấp số nhân với sự gia tăng kích thước. Nếu có thắc mắc hay ý kiến bổ sung, các bạn hãy để lại comment phía dưới nha