Một ma trận có thể được duyệt theo hai cách. Duyệt theo hàng (Row-wise) thăm từng hàng một từ hàng đầu tiên đến hàng cuối cùng. Các phần tử trong hàng được trả về từ chỉ số 0 đến chỉ số cuối.
Trong duyệt theo cột (Column-wise), các phần tử được duyệt từ cột đầu tiên đến cột cuối cùng theo thứ tự.
Trong ma trận 2D M[i][j]. Chỉ số i dùng cho hàng, chỉ số j dùng cho cột. Với duyệt theo hàng, bắt đầu từ:
i=0 hàng thứ nhất và 0≤j<chỉ số cuối
i=1 hàng thứ hai và 0≤j<chỉ số cuối
.....
i=hàng cuối và 0≤j<chỉ số cuối
Với duyệt theo cột, bắt đầu từ:
j=0 cột thứ nhất và 0≤i<chỉ số cuối
j=1 cột thứ hai và 0≤i<chỉ số cuối
.....
j=cột cuối và 0≤i<chỉ số cuối
Thứ tự chỉ số vẫn như nhau trong mảng 2D M[i][j] - i cho hàng, j cho cột.
Ví dụ
Đầu vào -
int arr[MAX][MAX] = { {1,2,3,4,5},{6,7,8,9,0}, {5,4,3,2,1},{0,0,0,0,0}, {8,9,7,6,1}};
Đầu ra -
Duyệt theo hàng: 1 2 3 4 5 6 7 8 9 0 5 4 3 2 1 0 0 0 0 0 8 9 7 6 1 Duyệt theo cột: 1 6 5 0 8 2 7 4 0 9 3 8 3 0 7 4 9 2 0 6 5 0 1 0 1
Giải thích - Đầu ra tự giải thích.

Đầu vào -
int arr[MAX][MAX] = { {1,1,1,1,1},{2,2,2,2,2}, {3,3,3,3,3},{4,4,4,4,4}, {5,5,5,5,5}};
Đầu ra -
Duyệt theo hàng: 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 Duyệt theo cột: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Giải thích - Đầu ra tự giải thích.
Phương pháp sử dụng trong chương trình dưới đây
Trong phương pháp này, sử dụng hai vòng lặp for để in ma trận 2D đầu vào theo duyệt hàng và duyệt cột.
Nhập mảng arr[][] đại diện cho ma trận 2D.
Khai báo biến i, j làm chỉ số hàng và cột.
Với duyệt theo hàng: vòng lặp for i=0 đến i<MAX, bên trong vòng lặp for j=0 đến j<MAX, in arr[i][j].
Với duyệt theo cột: vòng lặp for j=0 đến j<MAX, bên trong vòng lặp for i=0 đến i<MAX, in arr[i][j].
Ví dụ mã
#include <bits/stdc++.h> using namespace std; #define MAX 5 int main(){ int arr[MAX][MAX] = { {1,2,3,4,5},{6,7,8,9,0},{5,4,3,2,1},{0,0,0,0,0},{8,9,7,6,1}}; int i, j; cout<<"Duyệt theo hàng "<<endl; for(i=0;i<MAX;i++){ cout<<endl; for(j=0;j<MAX;j++){ cout<<" "<<arr[i][j]; } } cout<<endl<<endl; cout<<"Duyệt theo cột "<<endl; for(j=0;j<MAX;j++){ cout<<endl; for(i=0;i<MAX;i++){ cout<<" "<<arr[i][j]; } } return 0; }
Đầu ra
Nếu chạy mã trên sẽ cho kết quả:
Duyệt theo hàng: 1 2 3 4 5 6 7 8 9 0 5 4 3 2 1 0 0 0 0 0 8 9 7 6 1 Duyệt theo cột: 1 6 5 0 8 2 7 4 0 9 3 8 3 0 7 4 9 2 0 6 5 0 1 0 1