C++ Program to Find the Sum of the Diagonals of a Matrix

Finding the sum of the diagonals of a matrix is a common task in matrix operations, essential for many computational problems in mathematics, computer science, and engineering. This article explores different C++ Program to Find the Sum of the Diagonals of a Matrix providing comprehensive examples to illustrate various approaches.

Prerequisites

To effectively understand and implement the solutions provided in this article, you should have:

  1. Basic understanding of the C++ programming language.
  2. Knowledge of arrays and matrices.
  3. Familiarity with loops and control structures in C++.

Introduction

In this article, we will discuss a C++ program to find the sum of the diagonals of a matrix. Diagonal elements in a square matrix can be classified into the primary (or main) diagonal and the secondary (or anti-diagonal). We will cover different methods to compute the sum of these diagonals, providing detailed explanations and code examples.

1. Method 1: Using Simple Loops

1.1 Explanation

In this method, we use simple loops to iterate through the matrix and calculate the sum of the primary and secondary diagonals. The primary diagonal elements are those where the row index equals the column index, and the secondary diagonal elements are those where the row index plus the column index equals the size of the matrix minus one.

1.2 Code Implementation

C++
#include <iostream>
using namespace std;

int main() {
    int n;

    // Input matrix dimension
    cout << "Enter the size of the matrix: ";
    cin >> n;

    int matrix[n][n];

    // Input matrix elements
    cout << "Enter the elements of the matrix:\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> matrix[i][j];
        }
    }

    int primaryDiagonalSum = 0, secondaryDiagonalSum = 0;

    // Calculate the sums of the diagonals
    for (int i = 0; i < n; i++) {
        primaryDiagonalSum += matrix[i][i];
        secondaryDiagonalSum += matrix[i][n - 1 - i];
    }

    cout << "Sum of the primary diagonal: " << primaryDiagonalSum << endl;
    cout << "Sum of the secondary diagonal: " << secondaryDiagonalSum << endl;

    return 0;
}

1.3 Output

C++
Enter the size of the matrix: 3
Enter the elements of the matrix:
1 2 3
4 5 6
7 8 9
Sum of the primary diagonal: 15
Sum of the secondary diagonal: 15

2. Method 2: Using Functions for Modularity

2.1 Explanation

In this method, we encapsulate the logic for calculating the diagonal sums into functions. This approach makes the code more modular and reusable.

2.2 Code Implementation

C++
#include <iostream>
using namespace std;

int calculatePrimaryDiagonalSum(int matrix[][3], int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += matrix[i][i];
    }
    return sum;
}

int calculateSecondaryDiagonalSum(int matrix[][3], int n) {
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += matrix[i][n - 1 - i];
    }
    return sum;
}

int main() {
    const int n = 3;
    int matrix[n][n] = {
        {1, 2, 3},
        {4, 5, 6},
        {7, 8, 9}
    };

    int primaryDiagonalSum = calculatePrimaryDiagonalSum(matrix, n);
    int secondaryDiagonalSum = calculateSecondaryDiagonalSum(matrix, n);

    cout << "Sum of the primary diagonal: " << primaryDiagonalSum << endl;
    cout << "Sum of the secondary diagonal: " << secondaryDiagonalSum << endl;

    return 0;
}

2.3 Output

C++
Sum of the primary diagonal: 15
Sum of the secondary diagonal: 15

3. Method 3: Using Vectors for Dynamic Matrices

3.1 Explanation

In this method, we use vectors from the C++ Standard Library to handle matrices dynamically. This allows the program to work with matrices of any size determined at runtime.

3.2 Code Implementation

C++
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int n;

    // Input matrix dimension
    cout << "Enter the size of the matrix: ";
    cin >> n;

    vector<vector<int>> matrix(n, vector<int>(n));

    // Input matrix elements
    cout << "Enter the elements of the matrix:\n";
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> matrix[i][j];
        }
    }

    int primaryDiagonalSum = 0, secondaryDiagonalSum = 0;

    // Calculate the sums of the diagonals
    for (int i = 0; i < n; i++) {
        primaryDiagonalSum += matrix[i][i];
        secondaryDiagonalSum += matrix[i][n - 1 - i];
    }

    cout << "Sum of the primary diagonal: " << primaryDiagonalSum << endl;
    cout << "Sum of the secondary diagonal: " << secondaryDiagonalSum << endl;

    return 0;
}

3.3 Output

C++
Enter the size of the matrix: 4
Enter the elements of the matrix:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Sum of the primary diagonal: 34
Sum of the secondary diagonal: 34

Conclusion

In this article, we explored different methods to find the sum of the diagonals of a matrix in C++. We began with a basic approach using simple loops, then progressed to a more modular solution using functions, and finally, demonstrated a dynamic approach using vectors. Each method provides a unique way to handle the problem, catering to different needs and preferences in C++ programming. Understanding these techniques will help you tackle various matrix-related problems efficiently.