Với ma trận có kích thước nxn, nhiệm vụ của nó là chuyển đổi bất kỳ loại ma trận nào đã cho thành ma trận đường chéo.
Ma trận đường chéo là gì
Ma trận đường chéo là ma trận nxn có tất cả các phần tử không nằm chéo bằng 0 và các phần tử đường chéo có thể là bất kỳ giá trị nào.
Dưới đây là sơ đồ chuyển đổi các phần tử không phải đường chéo thành 0.
$$ \ begin {bmatrix} 1 &2 &3 \\ 4 &5 &6 \\ 7 &8 &9 \ end {bmatrix} \:\ rightarrow \:\ begin {bmatrix} 1 &0 &3 \\ 0 &5 &0 \\ 7 &0 &9 \ end {bmatrix} $$
Cách tiếp cận là bắt đầu một vòng lặp cho tất cả các phần tử không phải đường chéo và một vòng lặp khác cho các phần tử đường chéo và thay thế giá trị của các phần tử không phải đường chéo bằng 0 và giữ nguyên các phần tử đường chéo.
Ví dụ
Input-: matrix[3][3] = {{ 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }} Output-: {{ 1, 0, 3}, { 0, 5, 0}, { 7, 0, 9}} Input-: matrix[3][3] = {{ 91, 32, 23 }, { 40, 51, 26 }, { 72, 81, 93 }} Output-: {{ 91, 0, 23}, { 0, 51, 0}, { 72, 0, 93}}
THUẬT TOÁN
Start Step 1-> define macro for matrix size as const int n = 10 Step 2-> Declare function for converting to diagonal matrix void diagonal(int arr[][n], int a, int m) Loop For int i = 0 i < a i++ Loop For int j = 0 j < m j++ IF i != j & i + j + 1 != a Set arr[i][j] = 0 End End End Loop For int i = 0 i < a i++ Loop For int j = 0 j < m j++ Print arr[i][j] End Print \n End Step 2-> In main() Declare matrix as int arr[][n] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } } Call function as diagonal(arr, 3, 3) Stop
Ví dụ
#include <iostream> using namespace std; const int n = 10; //print 0 at diagonals in matrix of nxn void diagonal(int arr[][n], int a, int m) { for (int i = 0; i < a; i++) { for (int j = 0; j < m; j++) { if (i != j && i + j + 1 != a) arr[i][j] = 0; } } for (int i = 0; i < a; i++) { for (int j = 0; j < m; j++) { cout << arr[i][j] << " "; } cout << endl; } } int main() { int arr[][n] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; diagonal(arr, 3, 3); return 0; }
Đầu ra
NẾU CHÚNG TÔI CHẠY MÃ TRÊN, NÓ SẼ TẠO ĐẦU RA SAU ĐÂY
0 2 0 4 0 6 0 8 0