Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình chuyển ma trận thành ma trận đường chéo trong C++

Cho ma trận vuông n x n, chuyển thành ma trận đường chéo (các phần tử không trên đường chéo chính và đường chéo phụ bằng 0).

Ma trận đường chéo: Chỉ giữ phần tử ở vị trí (i,i) và (i, n-i-1), các phần tử khác gán 0.

Ví dụ

Input: {{1,2,3},{4,5,6},{7,8,9}}
Output: {{1,0,3},{0,5,0},{7,0,9}}

Thuật toán

Bắt đầu
Hàm diagonal(arr[][n], a, m)
    Với i=0..a-1, j=0..m-1:
        Nếu i!=j VÀ i+j+1!=a -> arr[i][j] = 0
    In ma trận
Kết thúc

Ví dụ code

#include <iostream>
using namespace std;

const int MAXN = 10;

void diagonal(int arr[][MAXN], 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[][MAXN] = {{1,2,3},{4,5,6},{7,8,9}};
    diagonal(arr, 3, 3);
    return 0;
}

Kết quả

1 0 3
0 5 0
7 0 9