Mảng hai chiều trong C/C++, cách khai báo nhập xuất ma trận số nguyên C++. Bài viết tổng hợp một số nội dung kiến thức, cách xử lý xung quanh mảng đa chiều C/C++.
Tóm Tắt
1. Mảng hai chiều là gì?
Mảng hai chiều trong C/C++ cũng như trong các ngôn ngữ lập trình khác là một cấu trúc điển hình của mảng đa chiều. Mảng đa chiều chủ yếu được thể hiện dưới dạng mảng hai chiều. Nếu như mảng một chiều bạn chỉ có thể tương tác với các phần tử với một thông số vị trí (một chiều) thì mảng hai chiều sẽ có hai thông số vị trí (2 chiều ngang dọc).
Mảng hai chiều còn được gọi là ma trận, ứng dụng của ma trận trong thực tế thực sự rất nhiều. Bạn có thể thấy ở các bài toán tìm đường đi, xử lý xâu, các bài toán quy hoạch động hay lưu trữ dữ liệu phức tạp. .. Thông thường các bài toán lập trình phức tạp đều sử dụng tới ma trận.
Mảng hai chiều sẽ có hai thông số kỹ thuật quan trọng đó là chiều ngang và chiều dọc, tức là số hàng và số cột. Đương nhiên mảng hai chiều sẽ không cần kích cỡ số hàng và số cột bằng nhau. Ví dụ hoàn toàn có thể có những mảng 3 × 8, 10 × 2. . .
Khi truy cập dữ liệu trong mảng hai chiều bạn cần phải chú ý đến thông số về vị trí của mảng. Mảng sẽ bắt đầu từ vị trí arr[0][0] giống với mảng một chiều. Nhớ kĩ câu thần chú “hàng trước, cột sau” khi thực hiện khai báo và truy cập dữ liệu nhé!.
Để dễ tưởng tượng, mảng hai chiều sẽ có cấu trúc tương tự như với những ô trong một bảng excel. Hai chiều ở đây chính là chiều ngang và chiều dọc. Hình dưới đây là một ví dụ về mảng 2 chiều kiểu số nguyên arr 4 x 4 thành phần .
Ma trận số nguyên 4 x 4 arr[4][4]
Trong ma trận trên:
arr[1][1] = 5
arr[0][1] = 8
arr[1][3] = 11
arr[3][1] = 1
2. Khai báo mảng hai chiều C/C++
Cách khai bảo mảng hai chiều trong C / C + + khá giống với mảng một chiều. Bạn hãy nhớ kĩ câu nói hàng trước cột sau, thường thì ta hay gọi hai biến hàng cột là n, m. Như vậy mảng khai báo sẽ có dạng n x m .
Cú pháp khai báo như sau:
][];
Chú ý : Cú pháp đúng với cả trong C và C + + nhé !
Ta thường tương tác mảng với những số nguyên nhưng không dừng lại ở đó, bạn trọn vẹn hoàn toàn có thể sử dụng mảng đề tàng trữ bất kỳ kiểu tài liệu nào khác nhé. Ví dụ như string, double hay một đối tượng người dùng tự định nghĩa .
Ví dụ khai báo mảng hai chiều ma trận số nguyên dạng arr 4 x 4: int arr[4][4];
Ví dụ khai báo mảng kiểu char 5×2: char c[5][2];
3. Thao tác với mảng hai chiều
Vì mảng có hai chiều nên khi duyệt mảng ta phải duyệt bằng hai vòng lặp, một vòng lặp số hàng, vòng lặp thứ 2 là số cột. Thông thường ta sẽ duyệt theo chiều ngang do đó sẽ là vòng lặp hàng trước, vòng lặp cột sau .
Cách thao tác, nhập xuất trong C/C++ khá giống với nhập xuất mảng hai chiều trong Java.
Chú ý : Ở phần dưới mình sẽ triển khai
3.1 Nhập dữ liệu cho mảng 2 chiều
Các hàm dưới đây đều dùng để thao tác với mảng hai chiều với tham số truyền vào là tên mảng, số hàng và số cột .
Code hàm nhập tài liệu từ bàn phím mảng hai chiều C :
// Nhap mang hai chieu C void iparr(int arr[10][10], int n, int m){ // mảng có tối đa 10 x 10, n hàng, m cột printf("Nhap mang hai chieu: \n"); for(int i =0; iTrong C + + chỉ khác chỗ lưu giữ liệu nhập từ bàn phím, ta có code như sau : // Nhap mang hai chieu C++ void iparr(int arr[10][10], int n, int m){ // Mang arr n hàng, m cột cout<<"Nhap mang hai chieu: \n"; for(int i =0; i>arr[i][j]; // Duyệt cột } } } 3.2 Xuất dữ liệu
Hàm xuất tài liệu mảng hai chiều C :
// In mang hai chieu C void printarr(int a[10][10], int n, int m){ for(int i=0; iHàm xuất tài liệu viết bằng C + + : // In mảng hai chiều C++ ra màn hình void printarr(int a[10][10], int n, int m){ for(int i=0; iChương trình nhập xuất mảng hai chiều hoàn chỉnh C++
Đề bài của mình là : Nhập và hiển thị ma trận số nguyên có kích cỡ n x m nhập vào từ bàn phím .Code full bài toán viết bằng C++:
(nếu bạn code c thì chỉ cần sửa đoạn nhập và in ra màn hình là được nhé!)#includeusing namespace std; // Nhập mảng hai chiều C++ void iparr(int arr[10][10], int n, int m){ cout<<"Nhap mang hai chieu: \n"; for(int i =0; i >arr[i][j]; } } } // In mảng hai chiều C++ ra màn hình void printarr(int a[10][10], int n, int m){ for(int i=0; i >n; cout<<"Nhap so cot: "; cin>>m; iparr(a, n, m); // Gọi hàm nhập mảng cout<<"\nMang da nhap: "< Và đây là hiệu quả khi chạy chương trình trên : 4. Lời kết
Một kỹ năng và kiến thức cực kỳ quan trọng, không hề thiếu so với những bạn học lập trình. Kiến thức này hầu hết để xử lý những bài toán, những trường hợp phức tạp trong lập trình Các bài toán ứng hai chiều hay ma trận là một dạng bài tập cực kỳ hay, mình có làm bài tập tương quan đến mảng hai chiều C + + trong những bài viết :
- Tìm xâu con chung lớn nhất
- Bài toán tìm số phép biến đổi ít nhất để xâu A thành xâu B
- Bài toán tính tổng lớn nhất của một dãy số
- Thuật toán Dijsktra tìm đường đi nhắn nhất từ một đỉnh tới các đỉnh
Lời cuối, mình xin gửi lời cảm ơn tới bạn vì đã đọc tới phần này của bài viết. Chúc bạn thành công nhé!
Xem thêm những bài viết về lập trình, về C + + khác của mình tại đây nhé !
Source: https://final-blade.com
Category: Kiến thức Internet