Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Programm zur Berechnung der Diagonalensumme einer Matrix

C++-Programm zur Berechnung der Diagonalensumme einer Matrix

PHPz
PHPznach vorne
2023-09-07 20:01:021232Durchsuche

C++-Programm zur Berechnung der Diagonalensumme einer Matrix

Die Verwendung zweidimensionaler Arrays oder Matrizen ist für viele von großem Nutzen Anwendungen. Matrixzeilen und -spalten werden zum Speichern von Zahlen verwendet Mehrdimensionale Arrays werden in C++ zur Darstellung von Matrizen verwendet. In diesem Artikel schauen wir uns die Umsetzung an Verwenden Sie C++, um die Diagonalsumme einer gegebenen quadratischen Matrix zu berechnen.

Die Matrizen haben zwei Diagonalen, die Hauptdiagonale und die Nebendiagonale (manchmal werden als Haupt- und Nebendiagonalen bezeichnet. Die Hauptdiagonale beginnt oben links Ecke (Index [0, 0]) zur unteren rechten Ecke (Index [n-1, n-1]), wobei n die Reihenfolge der ist Quadratische Matrix. Die Hauptdiagonale beginnt in der oberen rechten Ecke (Index [n-1, 0]) und endet in der unteren linken Ecke Ecke (Index [0, n-1]) Sehen wir uns den Algorithmus an, um die Summe der Elemente zusammen mit zu ermitteln diese beiden Diagonalen.

Die chinesische Übersetzung von

Matrix Diagonal Sum

lautet:

Die Summe der Matrixdiagonalen

$$begin{bmatrix} 8&5&3Neue Zeile 6 & 7& 1Zeile 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

Im vorherigen Beispiel wurde eine 3 x 3-Matrix verwendet. Wir haben die Diagonalen gescannt Lassen Sie uns den Algorithmus und die Implementierung einzeln betrachten und die Summe berechnen Ansicht.

Algorithmus

  • Matrix M als Eingabe lesen
  • Betrachten Sie M mit n Zeilen und n Spalten
  • sum_major := 0
  • sum_minor := 0
  • Für den Bereich von i von 0 bis n-1 führen Sie
  • aus
    • Für j im Bereich von 0 bis n - 1 gilt Folgendes:
      • Wenn i und j gleich sind, dann
        • sum_major := sum_major + M[ i ][ j ]
      • Ende, wenn
      • Wenn (i + j) dasselbe ist wie (N - 1), dann
        • sum_minor := sum_minor + M[ i ][ j ]
      • Ende, wenn
    • Ende für
  • Ende für
  • Rückgabesumme

Beispiel

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

Ausgabe

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

Fazit

In diesem Artikel haben wir gesehen, wie man die Diagonalsummen einer gegebenen quadratischen Matrix berechnet. Die Hauptdiagonale verläuft von der oberen linken Ecke zur unteren rechten Ecke, während die Nebendiagonale von der unteren linken Ecke zur oberen rechten Ecke verläuft. Die diagonale Linie beginnt von der oberen rechten Ecke bis zur unteren linken Ecke. Um die Summe davon zu finden Bei diagonalen Elementen durchlaufen wir alle Elemente, wenn sowohl Zeilen- als auch Spaltenindexwerte vorliegen Ebenso stellt es das Hauptdiagonalelement dar, wenn die Summe der beiden Indizes beträgt Sie entspricht der Ordnung n-1 der Matrix und wird zur Subdiagonalen hinzugefügt Die Prozedur erfordert zwei verschachtelte Schleifen und wir durchlaufen alle darin vorhandenen Elemente 2D-Array. Daher wird die Berechnung der Summe zweier Diagonalen O(n2) Zeit in Anspruch nehmen gegebene Matrix.

Das obige ist der detaillierte Inhalt vonC++-Programm zur Berechnung der Diagonalensumme einer Matrix. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen