Computer >> Máy Tính >  >> Lập trình >> C ++

Chương trình chuyển đổi Ma trận đã cho thành Ma trận Đường chéo trong C ++

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