Mảng (array) trong C (phần 4)

Nối tiếp chuỗi bài học C++ về chủ đề mảng (array) trong C++, trong bài viết dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về mảng 2D (hay mảng 2 chiều) trong C++ là gì. Ngoài ra bạn đọc có thể tham khảo thêm một số bài viết đã có trên Taimienphi.vn để tìm hiểu thêm về hàm và Number trong C++ là gì nhé.

Trong các bài viết mảng (array) trong C++ (phần 1, 2 và 3) trước Taimienphi.vn đã giới thiệu cho bạn về khai báo và khởi tạo mảng trong C++. Trong bài viết mảng (array) trong C++ (phần 4) tiếp theo dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về mảng 2D (hay mảng 2 chiều) trong C++.

mang array trong c phan 4

Mục Lục bài viết:

1. Mảng 2D trong C++

1.1. Định nghĩa mảng 2 chiều trong C++

1.2. Khởi tạo mảng 2 chiều trong C++

2. Tại sao sử dụng mảng 2 chiều trong C++?

 

 

1. Mảng 2 chiều (2D) trong C++

Mảng 2 chiều (2D) trong C++ còn được gọi là ma trận, mảng này bao gồm các hàng và các cột. Trước hết chúng ta sẽ cùng tìm hiểu cách khai báo và khởi tạo mảng 2D trong C++ như thế nào.

 

1.1 Định nghĩa mảng 2 chiều trong C++

Tương tự như mảng một chiều, chúng ta định nghĩa mảng 2 chiều trong C++ bằng cú pháp dưới đây:

int a[2][4];

Trong đó, a là mảng 2 chiều kiểu int, bao gồm 2 hàng và 4 cột.

mang array trong c phan 4

 

 

1.2 Khởi tạo mảng 2 chiều trong C++

Tương tự như mảng một chiều, chúng ta có thể gán giá trị cho mảng 2 chiều theo 2 cách.

Trong cách đầu tiên, chỉ cần gán một giá trị cho các phần tử của mảng. Nếu không có giá trị nào được gán cho bất kỳ phần tử nào, thì giá trị được gán là 0 theo mặc định.

Giả sử chúng ta đã khai báo mảng 2 chiều a[2][2]. Sau đó, để gán giá trị cho nó, chúng ta cần gán một giá trị cho các phần tử của nó.

int a[2][2];
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
Cách thứ 2 là khai báo và gán các giá trị đồng thời như trong mảng một chiều.
int a[2][3] = { 1, 2, 3, 4, 5, 6 };
Ở đây, giá trị của a[0][0] là 1, a[0][1] là 2, a[0][2] là 3, a[1][0] là 4, a[1][1 ] là 5 và a[1][2] là 6.
Chúng ta có thể viết đoạn mã trên như sau:
int a[2][3] = {
{1, 2, 3},
{4, 5, 6 }
};

Trong mảng một chiều khi gán giá trị cho một mảng tại thời điểm khai báo, chúng ta không cần cung cấp kích thước, nhưng trong mảng 2 chiều, chúng ta cần cung cấp ít nhất kích thước thứ hai.

Xem xét các trường hợp dưới đây để khởi tạo một mảng:

int a[2][2] = { 1, 2, 3, 4 }; /* hợp lệ */
int a[ ][2] = { 1, 2, 3, 4 }; /* hợp lệ */
int a[2][ ] = { 1, 2, 3, 4 }; /* không hợp lệ */
int a[ ][ ] = { 1, 2, 3, 4 }; /* không hợp lệ */

 

2. Tại sao sử dụng mảng 2 chiều trong C++?

Giả sử có 3 học sinh, mỗi học sinh học 2 môn học (môn 1 và môn 2), yêu cầu là chúng ta phải hiển thị điểm 2 môn học của 3 học sinh này.

#include
Sử dụng namespace std;
int main(){
float điểm[3][2];
int i,j;
for( i=0; i<3;>
{
/* đầu ra của điểm từ người dùng */
cout < "nhập="" số="" điểm="" của="" học="" sinh="">< (i+1)=""><>
for( j=0; j<2;>{C}{C}{C}
{
cout < "môn="" học"="">< (j+1)=""><>
cin >> điểm [i][j];
}
}
/* in điểm của các học sinh */
for( i=0; i<3;>{C}{C}{C}
{
cout < "điểm="" của="" học="" sinh="" "="">< (i+1)=""><>
for( j=0; j<2;>{C}{C}{C}
{
cout < "môn="" học="" "="">< (j+1)="">< "="" :="" "="">< marks[i][j]=""><>
}
}
Trả về 0;
}
Kết quả đầu ra có dạng:
Nhập số điểm của học sinh 1
Môn học 1
78
Môn học 2
94
Nhập số điểm của học sinh 2
Môn học 1
87
Môn học 2
91
Nhập số điểm của học sinh 3
Môn học 1
62
Môn học 2
56
Điểm số của học sinh 1
Môn học 1 : 78
Môn học 2 : 94
Điểm số của học sinh 2
Môn học 1 : 87
Môn học 2 : 91
Điểm số của học sinh 3
Môn học 1 : 62
Môn học 2 : 56

Trong ví dụ trên, trước tiên chúng ta định nghĩa mảng, bao gồm 3 hàng và 2 cột là float điểm[3][2];

Ở đây, các phần tử của mảng chứa điểm 2 môn học của 3 học sinh như sau:

mang array trong c phan 4 2

Trong ví dụ này, chúng ta lấy giá trị của từng phần tử của mảng bằng cách sử dụng vòng lặp for bên trong vòng lặp for khác.

Trong lần lặp đầu tiên của vòng lặp for bên ngoài, giá trị của i là 0. Với giá trị i là 0, khi vòng lặp for bên trong lặp lại đầu tiên, giá trị của j là 0, vì vậy điểm[i][j] là điểm[0][0]. Bằng cách viết cin >> mark [i] [j]; để lấy giá trị của các điểm[0][0].

Sau đó, vòng lặp for bên trong lặp lại và giá trị của j là 1, điểm [i][j] là điểm[0][1] và giá trị của nó được lấy từ người dùng. Tiếp theo, vòng lặp bên ngoài lặp lại lần thứ hai và giá trị của i là 1 và toàn bộ quá trình tiếp tục.

Sau khi gán các giá trị cho các phần tử mảng, chúng ta sẽ in các giá trị của các phần tử của mảng bằng cách sử dụng vòng lặp for bên trong vòng lặp for khác.

Dưới đây là ví dụ khác về mảng 2 chiều trong C++:

Giả sử có 2 nhà máy và mỗi nhà máy này sản xuất 4 loại mặt hàng khác nhau, bao gồm một số mặt hàng loại 1, một số mặt hàng loại 2, ... . Nhiệm vụ của chúng ta làtính tổng sản phẩm của từng nhà máy, tức là tổng các mặt hàng của từng loại mà nhà máy sản xuất.

#include
Sử dụng namespace std;
int main(){
int s[2][4];
s[0][0] = 2;
s[0][1] = 5;
s[0][2] = 7;
s[0][3] = 4;
s[1][0] = 9;
s[1][1] = 3;
s[1][2] = 2;
s[1][3] = 8;
cout < "tổng="" số="" mặt="" hàng="" của="" nhà="" máy="" 1="" :"=""><>
int sum1 = 0, sum2 = 0;
for(int i = 0; i < 4;="">
{
sum1 += s[0][i];
}
cout < sum1=""><>
cout < "tổng="" số="" mặt="" hàng="" của="" nhà="" máy="" 2="" :"=""><>
for(int j = 0; j < 4;="">
{
sum2 += s[1][j];
}
cout < sum2=""><>
trả về 0;
Kết quả đầu ra:
Tổng số mặt hàng của nhà máy 1:
18
Tổng số mặt hàng của nhà máy 2:
22

Ở đây, s[0][i] tương ứng với số lượng mặt hàng của nhà máy 1 và kiểu i, trong đó chúng ta lấy giá trị từ 0 đến 3 bằng cách sử dụng vòng lặp for và s[1][i] tương ứng số lượng các mặt hàng của nhà máy thứ 2 thuộc kiểu i. Ví dụ. - s[0][2] tương ứng cho loại mặt hàng thứ ba của nhà máy thứ 1 và s[1][2] tương ứng loại mặt hàng thứ ba của nhà máy thứ 2. sum1 là tổng của tất cả các mặt hàng của nhà máy 1. Tương tự với tổng của tất cả các mặt hàng của nhà máy thứ hai.

Ban đầu sum1 là 0. Trong lần lặp đầu tiên, s[0][i] là s[0][0], tương ứng số lượng mặt hàng đầu tiên của nhà máy thứ 1. Vì vậy, sum1 += s[0][i] sẽ là sum1 + = s[0][0]. Vì vậy, sum1 sẽ là 2. Tương tự trong lần lặp thứ hai, s[0][i] sẽ là s[0][1], tương ứng cho loại mặt hàng thứ 2 của nhà máy thứ nhất. Như vậy sum1 sẽ là 2 + 5 tức là 7 và tương tự.

https://thuthuat.taimienphi.vn/mang-array-trong-c-phan-4-45808n.aspx
Trong bài viết mảng (array) trong C++ (phần 4) trên đây Taimienphi.vn vừa giới thiệu cho bạn về mảng 2D (tức mảng 2 chiều) trong C++ là gì. Trong các bài viết tiếp theo Taimienphi.vn sẽ giới thiệu tiếp cho bạn về chuỗi trong C - một nội dung được rất nhiều người lập trình quan tâm, rất nhiều vấn đề liên quan đến chuỗi trong C sẽ được trình bày chi tiết trong bài viết.

Tác giả: Trần Hoạt     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Con trỏ (pointer) trong C
Mảng (array) trong C (phần 2)
Date và Time trong C
Phạm vi biến trong C
Lệnh điều kiện trong C
Từ khoá liên quan:

Mảng (array) trong C++

, học C++, C++,

SOFT LIÊN QUAN
  • Dev C Portable

    Trình biên dịch C/C++ di động tiện lợi

    Dev C++ Portable phù hợp cho lập trình viên và sinh viên yêu thích lập trình C/C++. So với phiên bản cài đặt truyền thống, phần mềm này giúp bạn dễ dàng làm việc trên bất kỳ thiết bị nào mà không cần cài đặt phức tạp.

Tin Mới

  • Tả lại lễ hội trung thu ở trường em

    Tết trung thu là một ngày lễ lớn của năm. Vào ngày nay, tại thôn, xóm, trường học thường tổ chức lễ hội trung thu để các em thiếu nhi trông trăng, bày cỗ, thắp đèn lồng và hát những bài ca vui nhộn. Em hãy tả lại lễ hội trung thu ở trường em mà em có dịp tham dự.

  • Dàn ý tả lại lễ hội trung thu ở trường em

    Khi thực hành viết dàn ý tả lại lễ hội trung thu ở trường em, các em học sinh sẽ được rèn luyện kĩ năng sắp xếp, trình bày các ý chính sao cho khoa học, mạch lạc, dễ hiểu từ những điều mình đã quan sát được, theo một

  • Cách tải và cài đặt Google Dịch trên điện thoại

    Tiến hành tải Google Dịch và cài đặt ứng dụng dịch thuật phổ biến nhất hiện nay trên điện thoại Android hay iPhone, iOS sẽ giúp chúng ta có một trợ thủ đắc lực trong việc dịch đa ngôn ngữ, đặc biệt là dịch từ tiếng Anh sang tiếng Việt với những bạn còn yếu về ngôn ngữ phổ biến nhất trên thế giới này.

  • Cách tải và cài Đột Kích, CrossFire trên máy tính, laptop

    Crossfire - Đột Kích trong tầm ngắm là cái tên quen thuộc với bất cứ game thủ nào đam mê bộ môn game bắn súng online, sức lan tỏa của Game Đột Kích là chưa bao giờ dừng ở đó. Hàng ngày có rất nhiều người cài Đột Kích trên máy tính và laptop của mình để có thể tự trải nghiệm tựa game này.