
The utilization of 2-dimensional arrays or matrices is extremely advantageous for several applications. Matrix rows and columns are used to hold numbers. We can define 2D 在C++中使用多维数组来表示矩阵。在本文中,我们将看看如何实现 use C++ to calculate the diagonal sum of a given square matrix.
The matrices have two diagonals, the main diagonal and the secondary diagonal (sometimes referred to as major and minor diagonals). The major diagonal starts from the top-left corner (index [0, 0]) to the bottom-right corner (index [n-1, n-1]) where n is the order of the 正方形矩阵。主对角线从右上角(索引[n-1, 0])开始,到左下角 corner (index [0, n-1]). Let us see the algorithm to find the sum of the elements along with these two diagonals.
$$\begin{bmatrix} 8 & 5& 3\newline 6 & 7& 1\newline 2 & 4& 9\ \end{bmatrix},$$
Sum of all elements in major diagonal: (8 + 7 + 9) = 24 Sum of all elements in minor diagonal: (3 + 7 + 2) = 12
In the previous example, one 3 x 3 matrix was used. We have scanned the diagonals individually and calculated the sum. Let us see the algorithm and implementation for a clear view.
#include <iostream>
#include <cmath>
#define N 7
using namespace std;
float solve( int M[ N ][ N ] ){
int sum_major = 0;
int sum_minor = 0;
for ( int i = 0; i < N; i++ ) {
for ( int j = 0; j < N; j++ ) {
if( i == j ) {
sum_major = sum_major + M[ i ][ j ];
}
if( (i + j) == N - 1) {
sum_minor = sum_minor + M[ i ][ j ];
}
}
}
cout << "The sum of major diagonal: " << sum_major << endl;
cout << "The sum of minor diagonal: " << sum_minor << endl;
}
int main(){
int mat1[ N ][ N ] = {
{5, 8, 74, 21, 69, 78, 25},
{48, 2, 98, 6, 63, 52, 3},
{85, 12, 10, 6, 9, 47, 21},
{6, 12, 18, 32, 5, 10, 32},
{8, 45, 74, 69, 1, 14, 56},
{7, 69, 17, 25, 89, 23, 47},
{98, 23, 15, 20, 63, 21, 56},
};
cout << "For the first matrix: " << endl;
solve( mat1 );
int mat2[ N ][ N ] = {
{6, 8, 35, 21, 87, 8, 26},
{99, 2, 36, 326, 25, 24, 56},
{15, 215, 3, 157, 8, 41, 23},
{96, 115, 17, 5, 3, 10, 18},
{56, 4, 78, 5, 10, 22, 58},
{85, 41, 29, 65, 47, 36, 78},
{12, 23, 87, 45, 69, 96, 12}
};
cout << "\nFor the second matrix: " << endl;
solve( mat2 );
}
For the first matrix: The sum of major diagonal: 129 The sum of minor diagonal: 359 For the second matrix: The sum of major diagonal: 74 The sum of minor diagonal: 194
In this article, we have seen how to calculate the diagonal sums of a given square matrix. 主对角线从左上角延伸到右下角,而副对角线则从左下角延伸到右上角 斜线从右上角开始到左下角。要找到这些的总和 diagonal elements, we loop through all elements. When both row and column index values 相同,它表示主对角线元素,当两个索引的和为 与矩阵的阶数n-1相同,它将添加到副对角线上 procedure takes two nested loops and we are traversing through all elements present in the 2D数组。因此,计算两条对角线的和将花费O(n2)的时间 给定的矩阵。
以上就是C++程序计算矩阵对角线之和的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号