Zwei Matrizen in C addieren

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie zwei Matrizen in C addieren. Das Lab umfasst die folgenden Schritte: das Lesen der Dimensionen und Elemente beider Matrizen, die Addition der entsprechenden Elemente und die Ausgabe der resultierenden Matrix. Sie beginnen mit der Erstellung eines C-Programms zum Lesen der Matrixdimensionen und -elemente, implementieren dann die Matrixaddition und geben schließlich die endgültige Matrix aus. Das Lab zielt darauf ab, praktische Erfahrungen mit Matrizen und linearer Algebra in C zu vermitteln.

Lesen der Dimensionen und Elemente beider Matrizen

In diesem Schritt lernen Sie, wie Sie die Dimensionen und Elemente zweier Matrizen in einem C-Programm lesen. Für die Matrixaddition sind Matrizen gleicher Größe erforderlich, daher implementieren wir zunächst die Eingabe für Matrixdimensionen und -elemente.

Erstellen des Matrixadditionsprogramms

Erstellen Sie zunächst eine neue C-Datei für die Matrixaddition:

cd ~/project
nano matrix_addition.c

Schreiben wir nun den Code zum Lesen der Matrixdimensionen und -elemente:

#include <stdio.h>

#define MAX_SIZE 10

int main() {
    int rows, cols;
    int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE];

    // Lesen der Dimensionen der Matrizen
    printf("Anzahl der Zeilen eingeben (max %d): ", MAX_SIZE);
    scanf("%d", &rows);
    printf("Anzahl der Spalten eingeben (max %d): ", MAX_SIZE);
    scanf("%d", &cols);

    // Eingabe der Elemente für die erste Matrix
    printf("Elemente der ersten Matrix eingeben:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("Element [%d][%d] eingeben: ", i, j);
            scanf("%d", &matrix1[i][j]);
        }
    }

    // Eingabe der Elemente für die zweite Matrix
    printf("Elemente der zweiten Matrix eingeben:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("Element [%d][%d] eingeben: ", i, j);
            scanf("%d", &matrix2[i][j]);
        }
    }

    return 0;
}

Kompilieren und Ausführen des Programms

Kompilieren Sie das Programm:

gcc matrix_addition.c -o matrix_addition

Beispielausgabe

Wenn Sie das Programm ausführen, werden Sie aufgefordert, die Matrixdimensionen und -elemente einzugeben:

Anzahl der Zeilen eingeben (max 10): 2
Anzahl der Spalten eingeben (max 10): 3
Elemente der ersten Matrix eingeben:
Element [0][0] eingeben: 1
Element [0][1] eingeben: 2
Element [0][2] eingeben: 3
Element [1][0] eingeben: 4
Element [1][1] eingeben: 5
Element [1][2] eingeben: 6
Elemente der zweiten Matrix eingeben:
Element [0][0] eingeben: 7
Element [0][1] eingeben: 8
Element [0][2] eingeben: 9
Element [1][0] eingeben: 10
Element [1][1] eingeben: 11
Element [1][2] eingeben: 12

Codeerklärung

  • #define MAX_SIZE 10 legt eine maximale Grenze für die Matrixdimensionen fest.
  • scanf() wird verwendet, um ganzzahlige Eingaben für Zeilen, Spalten und Matrixelemente zu lesen.
  • Verschachtelte for-Schleifen werden verwendet, um Elemente für beide Matrizen einzugeben.
  • Das Programm stellt sicher, dass die Matrixdimensionen innerhalb der definierten maximalen Größe liegen.

Addieren entsprechender Elemente

In diesem Schritt lernen Sie, wie Sie entsprechende Elemente zweier Matrizen addieren und das Ergebnis in einer neuen Matrix speichern.

Aktualisieren des Matrixadditionsprogramms

Öffnen Sie die vorherige C-Datei:

cd ~/project
nano matrix_addition.c

Ändern Sie das Programm, um Matrixelemente zu addieren:

#include <stdio.h>

#define MAX_SIZE 10

int main() {
    int rows, cols;
    int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];

    // Vorheriger Eingabecode bleibt gleich
    // ... (Eingabe der Dimensionen und Elemente von matrix1 und matrix2)

    // Addieren entsprechender Elemente
    printf("\nErgebnismatrix (Matrix1 + Matrix2):\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            result[i][j] = matrix1[i][j] + matrix2[i][j];
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Kompilieren und Ausführen des Programms

Kompilieren Sie das aktualisierte Programm:

gcc matrix_addition.c -o matrix_addition

Führen Sie das Programm aus:

./matrix_addition

Beispielausgabe

Anzahl der Zeilen eingeben (max 10): 2
Anzahl der Spalten eingeben (max 10): 3
Elemente der ersten Matrix eingeben:
Element [0][0] eingeben: 1
Element [0][1] eingeben: 2
Element [0][2] eingeben: 3
Element [1][0] eingeben: 4
Element [1][1] eingeben: 5
Element [1][2] eingeben: 6
Elemente der zweiten Matrix eingeben:
Element [0][0] eingeben: 7
Element [0][1] eingeben: 8
Element [0][2] eingeben: 9
Element [1][0] eingeben: 10
Element [1][1] eingeben: 11
Element [1][2] eingeben: 12

Ergebnismatrix (Matrix1 + Matrix2):
8 10 12
14 16 18

Codeerklärung

  • Ein neuer zweidimensionaler Array result wird erstellt, um die Summe der Matrixelemente zu speichern.
  • Verschachtelte for-Schleifen iterieren durch jedes Element beider Matrizen.
  • result[i][j] = matrix1[i][j] + matrix2[i][j] addiert entsprechende Elemente.
  • printf() wird verwendet, um die Ergebnismatrix anzuzeigen.

Ausgabe der Ergebnismatrix

In diesem Schritt lernen Sie, wie Sie die Ergebnismatrix in einer übersichtlichen und lesbaren Formatierung ausgeben.

Verbesserung der Matrixausgabefunktion

Öffnen Sie die vorherige C-Datei:

cd ~/project
nano matrix_addition.c

Aktualisieren Sie das Programm mit einer dedizierten Matrixausgabefunktion:

#include <stdio.h>

#define MAX_SIZE 10

// Funktion zum Ausgeben der Matrix
void printMatrix(int matrix[MAX_SIZE][MAX_SIZE], int rows, int cols, const char* matrixName) {
    printf("%s:\n", matrixName);
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%4d ", matrix[i][j]);
        }
        printf("\n");
    }
    printf("\n");
}

int main() {
    int rows, cols;
    int matrix1[MAX_SIZE][MAX_SIZE], matrix2[MAX_SIZE][MAX_SIZE], result[MAX_SIZE][MAX_SIZE];

    // Vorheriger Eingabecode bleibt gleich
    // ... (Eingabe der Dimensionen und Elemente von matrix1 und matrix2)

    // Addieren entsprechender Elemente
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            result[i][j] = matrix1[i][j] + matrix2[i][j];
        }
    }

    // Ausgeben der Matrizen
    printMatrix(matrix1, rows, cols, "Erste Matrix");
    printMatrix(matrix2, rows, cols, "Zweite Matrix");
    printMatrix(result, rows, cols, "Ergebnismatrix (Matrix1 + Matrix2)");

    return 0;
}

Kompilieren und Ausführen des Programms

Kompilieren Sie das aktualisierte Programm:

gcc matrix_addition.c -o matrix_addition

Führen Sie das Programm aus:

./matrix_addition

Beispielausgabe

Anzahl der Zeilen eingeben (max 10): 2
Anzahl der Spalten eingeben (max 10): 3
Elemente der ersten Matrix eingeben:
Element [0][0] eingeben: 1
Element [0][1] eingeben: 2
Element [0][2] eingeben: 3
Element [1][0] eingeben: 4
Element [1][1] eingeben: 5
Element [1][2] eingeben: 6
Elemente der zweiten Matrix eingeben:
Element [0][0] eingeben: 7
Element [0][1] eingeben: 8
Element [0][2] eingeben: 9
Element [1][0] eingeben: 10
Element [1][1] eingeben: 11
Element [1][2] eingeben: 12

Erste Matrix:
   1    2    3

Zweite Matrix:
   7    8    9

Ergebnismatrix (Matrix1 + Matrix2):
   8   10   12

Codeerklärung

  • Die Funktion printMatrix() wurde erstellt, um Matrizen mit konsistenter Formatierung auszugeben.
  • Der Formatbezeichner %4d sorgt für eine ausgerichtete Spaltenausgabe.
  • Die Funktion nimmt die Matrix, die Dimensionen und einen Namen als Parameter entgegen.
  • Die Matrizen werden mit aussagekräftigen Überschriften ausgegeben.
  • Verschachtelte Schleifen iterieren durch die Matrixelemente zur Ausgabe.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man die Dimensionen und Elemente zweier Matrizen in einem C-Programm liest. Dies ist ein essentieller Schritt für die Matrixaddition, da Matrizen gleicher Größe benötigt werden. Sie haben die Eingabe für die Matrixdimensionen und -elemente implementiert, um sicherzustellen, dass das Programm Matrizen bis zu einer maximalen Größe von 10x10 verarbeiten kann.

Nachdem die Matrixdimensionen und -elemente gelesen wurden, besteht der nächste Schritt darin, die entsprechenden Elemente der beiden Matrizen zu addieren und die resultierende Matrix zu speichern.