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 Multidimensional arrays are used to represent matrices in C. In this article we will look at how to implement 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 Square matrix. The main diagonal starts from the upper right corner (index [n-1, 0]) and ends at the lower left corner corner (index [0, n-1]). Let us see the algorithm to find the sum of the elements along with these two diagonals.
The Chinese translation of$$\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. The main diagonal runs from the upper left corner to the lower right corner, while the secondary diagonal runs from the lower left corner to the upper right corner. The diagonal line starts from the upper right corner to the lower left corner. To find the sum of these diagonal elements, we loop through all elements. When both row and column index values Same, it represents the main diagonal element when the sum of the two indices is Same as the order n-1 of the matrix, it will be added to the subdiagonal procedure takes two nested loops and we are traversing through all elements present in the 2D array. Therefore, calculating the sum of the two diagonals will take O(n2) time given matrix.
The above is the detailed content of C++ program to calculate the sum of diagonals of a matrix. For more information, please follow other related articles on the PHP Chinese website!