Maison  >  Article  >  développement back-end  >  Programme C++ pour calculer la somme des diagonales d'une matrice

Programme C++ pour calculer la somme des diagonales d'une matrice

PHPz
PHPzavant
2023-09-07 20:01:021185parcourir

Programme C++ pour calculer la somme des diagonales dune matrice

L'utilisation de tableaux ou de matrices bidimensionnels est extrêmement avantageuse pour plusieurs les applications. Les lignes et les colonnes matricielles sont utilisées pour contenir des nombres. Nous pouvons définir la 2D. Les tableaux multidimensionnels sont utilisés pour représenter des matrices en C++. Dans cet article, nous verrons comment mettre en œuvre utilisez C++ pour calculer la somme diagonale d'une matrice carrée donnée.

Les matrices ont deux diagonales, la diagonale principale et la diagonale secondaire (parfois appelées diagonales majeures et mineures). La diagonale majeure commence en haut à gauche. coin (index [0, 0]) vers le coin inférieur droit (index [n-1, n-1]) où n est l'ordre des Matrice carrée. La diagonale principale commence au coin supérieur droit (index [n-1, 0]) et se termine au coin inférieur gauche coin (index [0, n-1]). Voyons l'algorithme pour trouver la somme des éléments avec ces deux diagonales.

La traduction chinoise de

Matrix Diagonal Sum

est :

La somme des diagonales de la matrice

$$commencer{bmatrix} 8&5&3nouvelle ligne 6 & 7 & 1nouvelle ligne 2 & 4 & 9 fin{bmatrix},$$

Sum of all elements in major diagonal: (8 + 7 + 9) = 24
Sum of all elements in minor diagonal: (3 + 7 + 2) = 12

Dans l'exemple précédent, une matrice 3 x 3 a été utilisée. Nous avons scanné les diagonales. individuellement et calculé la somme. Voyons l'algorithme et la mise en œuvre pour un aperçu clair. vue.

Algorithme

  • Lire la matrice M en entrée
  • Considérez M avec n lignes et n colonnes
  • sum_major := 0
  • sum_minor := 0
  • Pour la plage de i de 0 à n-1, exécutez
    • pour j compris entre 0 et n - 1, faites
      • si i et j sont identiques, alors
        • sum_major := sum_major + M[ i ][ j ]
      • fin si
      • si (i + j) est identique à (N - 1), alors
        • sum_minor := sum_minor + M[ i ][ j ]
      • fin si
    • fin pour
  • fin pour
  • somme de retour

Exemple

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

Sortie

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

Dans cet article, nous avons vu comment calculer les sommes diagonales d'une matrice carrée donnée. La diagonale principale s'étend du coin supérieur gauche au coin inférieur droit, tandis que la diagonale secondaire s'étend du coin inférieur gauche au coin supérieur droit. La ligne diagonale part du coin supérieur droit jusqu'au coin inférieur gauche. Pour trouver la somme de ceux-ci éléments diagonaux, nous parcourons tous les éléments lorsque les valeurs d'index de ligne et de colonne. Idem, il représente l'élément diagonal principal lorsque la somme des deux indices est Identique à l'ordre n-1 de la matrice, il sera ajouté à la sous-diagonale La procédure prend deux boucles imbriquées et nous parcourons tous les éléments présents dans le Tableau 2D. Par conséquent, calculer la somme de deux diagonales prendra un temps O(n2) matrice donnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer