Home > Backend Development > C++ > body text

C++ program to calculate the sum of diagonals of a matrix

PHPz
Release: 2023-09-07 20:01:02
forward
1215 people have browsed it

C++ program to calculate the sum of diagonals of a matrix

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

Matrix Diagonal Sum

is:

The sum of the matrix 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
Copy after login

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.

Algorithm

  • Read matrix M as input
  • Consider M with n rows and n columns
  • sum_major := 0
  • sum_minor := 0
  • For the range of i from 0 to n-1, execute
    • for j range from 0 to n - 1, do
      • if i and j are the same, then
        • sum_major := sum_major M[ i ][ j ]
      • end if
      • if (i j) is same as (N - 1), then
        • sum_minor := sum_minor M[ i ][ j ]
      • end if
    • end for
  • end for
  • return sum

Example

#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 );
}
Copy after login

Output

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
Copy after login

Conclusion

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!

Related labels:
source:tutorialspoint.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!