
- C++ Basics
- C++ Home
- C++ Overview
- C++ Environment Setup
- C++ Basic Syntax
- C++ Comments
- C++ Data Types
- C++ Variable Types
- C++ Variable Scope
- C++ Constants/Literals
- C++ Modifier Types
- C++ Storage Classes
- C++ Operators
- C++ Loop Types
- C++ Decision Making
- C++ Functions
- C++ Numbers
- C++ Arrays
- C++ Strings
- C++ Pointers
- C++ References
- C++ Date & Time
- C++ Basic Input/Output
- C++ Data Structures
- C++ Object Oriented
- C++ Classes & Objects
- C++ Inheritance
- C++ Overloading
- C++ Polymorphism
- C++ Abstraction
- C++ Encapsulation
- C++ Interfaces
C++ Program to Compute 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 matrices in C++ using multi-dimensional arrays as well. In this article, we'll look at how to 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 major diagonal starts from top-right corner (index [n-1, 0]) to bottom-left corner (index [0, n-1]). Let us see the algorithm to find the sum of the elements along with these two diagonals.
Matrix Diagonal Sum
$$\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.
Algorithm
- read matrix M as input
- consider M has n rows and n columns
- sum_major := 0
- sum_minor := 0
- for i ranging from 0 to n - 1, do
- for j rangign 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
- if i and j are the same, then
- end for
- for j rangign from 0 to n - 1, do
- 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 ); }
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
Conclusion
In this article, we have seen how to calculate the diagonal sums of a given square matrix. The major diagonal starts from the top-left corner to the bottom-right corner and the minor diagonal starts from the top-right corner to the bottom-left corner. To find the sum of these diagonal elements, we loop through all elements. When both row and column index values are the same, it indicates the major diagonal element, and when the sum of two indices is the same as n – 1 where n is the order of the matrix, it will add to the minor diagonal. This procedure takes two nested loops and we are traversing through all elements present in the 2D array. So it will take O(n2) amount of time to compute the sum of two diagonals of the given matrix.
- Related Articles
- Java Program to Compute the Sum of Diagonals of a Matrix
- Golang Program to Compute the Sum of Diagonals of a Matrix
- Swift Program to Compute the Sum of Diagonals of a Matrix
- JavaScript Program to Efficiently compute sums of diagonals of a matrix
- C++ Program to Compute Determinant of a Matrix
- Program to Interchange Diagonals of Matrix in C program
- Swift Program to Interchange the Diagonals of a Matrix
- C Program to print the sum of boundary elements of a matrix
- Python Program to Interchange the Diagonals of a matrix using predefined methods
- Java Program to Accept a Matrix of Order M x N & Interchange the Diagonals
- C++ program to find the Sum of each Row and each Column of a Matrix
- PyTorch – How to compute the pseudoinverse of a matrix?
- Swift Program to Find the Sum of the Boundary Elements of a Matrix
- Swift Program to Calculate the Sum of Matrix Elements
- PyTorch – How to compute the determinant of a square matrix?
