Zwei Matrizen in C subtrahieren

CCBeginner
Jetzt üben

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

Einführung

In diesem Labor lernen Sie, wie Sie zwei Matrizen in einem C-Programm subtrahieren. Das Labor umfasst die folgenden Schritte:

Zuerst lernen Sie, wie Sie die Dimensionen und Elemente zweier Matrizen über Benutzereingaben zu lesen. Sie erstellen ein C-Programm, das den Benutzer auffordert, die Anzahl der Zeilen und Spalten sowie die Elemente der beiden Matrizen einzugeben.

Als Nächstes implementieren Sie die Matrixsubtraktion, bei der Sie die entsprechenden Elemente der beiden Matrizen subtrahieren und das Ergebnis in einer neuen Matrix speichern. Schließlich lernen Sie, wie Sie die resultierende Matrix ausgeben.

Dimensionen und Elemente einlesen

In diesem Schritt lernen Sie, wie Sie die Matrixdimensionen und -elemente über Benutzereingaben in einem C-Programm zur Matrixsubtraktion lesen. Wir erstellen ein Programm, das es Benutzern ermöglicht, die Größe und die Werte zweier Matrizen einzugeben.

Erstellen Sie zunächst eine neue C-Datei für unser Matrixsubtraktionsprogramm:

cd ~/project
nano matrix_subtraction.c

Fügen Sie nun den folgenden Code zur Datei hinzu:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Matrixdimensionen einlesen
    printf("Geben Sie die Anzahl der Zeilen ein: ");
    scanf("%d", &rows);
    printf("Geben Sie die Anzahl der Spalten ein: ");
    scanf("%d", &cols);

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

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

    return 0;
}

Beispielausgabe:

Geben Sie die Anzahl der Zeilen ein: 2
Geben Sie die Anzahl der Spalten ein: 2
Geben Sie die Elemente der ersten Matrix ein:
Geben Sie das Element [0][0] ein: 5
Geben Sie das Element [0][1] ein: 6
Geben Sie das Element [1][0] ein: 7
Geben Sie das Element [1][1] ein: 8
Geben Sie die Elemente der zweiten Matrix ein:
Geben Sie das Element [0][0] ein: 1
Geben Sie das Element [0][1] ein: 2
Geben Sie das Element [1][0] ein: 3
Geben Sie das Element [1][1] ein: 4

Kompilieren und ausführen des Programms:

gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction

Codeerklärung:

  • Wir definieren eine maximale Matrixgröße von 100x100 mit MAX_SIZE.
  • rows und cols speichern die Dimensionen der Matrizen.
  • Zwei 2D-Arrays matrix1 und matrix2 werden erstellt, um Matrixelemente zu speichern.
  • scanf() wird verwendet, um Matrixdimensionen und -elemente über Benutzereingaben zu lesen.
  • Geschachtelte Schleifen werden verwendet, um Elemente für beide Matrizen einzugeben.

Entsprechende Elemente subtrahieren

In diesem Schritt lernen Sie, wie Sie entsprechende Elemente zweier Matrizen subtrahieren und das Ergebnis in einer neuen Matrix speichern. Wir erweitern das vorherige Programm, um die Matrixsubtraktion durchzuführen.

Öffnen Sie die vorhandene Datei und ändern Sie den Code:

cd ~/project
nano matrix_subtraction.c

Aktualisieren Sie den Code mit der Matrixsubtraktionslogik:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Matrixdimensionen einlesen
    printf("Geben Sie die Anzahl der Zeilen ein: ");
    scanf("%d", &rows);
    printf("Geben Sie die Anzahl der Spalten ein: ");
    scanf("%d", &cols);

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

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

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

    return 0;
}

Beispielausgabe:

Geben Sie die Anzahl der Zeilen ein: 2
Geben Sie die Anzahl der Spalten ein: 2
Geben Sie die Elemente der ersten Matrix ein:
Geben Sie das Element [0][0] ein: 5
Geben Sie das Element [0][1] ein: 6
Geben Sie das Element [1][0] ein: 7
Geben Sie das Element [1][1] ein: 8
Geben Sie die Elemente der zweiten Matrix ein:
Geben Sie das Element [0][0] ein: 1
Geben Sie das Element [0][1] ein: 2
Geben Sie das Element [1][0] ein: 3
Geben Sie das Element [1][1] ein: 4

Codeerklärung:

  • Ein neues 2D-Array result wird erstellt, um die Ergebnisse der Subtraktion zu speichern.
  • Geschachtelte Schleifen iterieren durch jedes Matrixelement.
  • result[i][j] wird berechnet, indem entsprechende Elemente von matrix1 und matrix2 subtrahiert werden.
  • Die Subtraktion folgt den elementweisen Regeln der Matrixsubtraktion.

Kompilieren Sie das Programm:

gcc matrix_subtraction.c -o matrix_subtraction

Die Ergebnismatrix ausgeben

In diesem Schritt lernen Sie, wie Sie die resultierende Matrix nach der Subtraktion ausgeben. Wir werden das vorherige Programm modifizieren, um die Ergebnisse der Subtraktion anzuzeigen.

Öffnen Sie die vorhandene Datei und aktualisieren Sie den Code:

cd ~/project
nano matrix_subtraction.c

Aktualisieren Sie den Code mit der Logik zum Ausgeben der Matrix:

#include <stdio.h>

#define MAX_SIZE 100

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

    // Matrixdimensionen einlesen
    printf("Geben Sie die Anzahl der Zeilen ein: ");
    scanf("%d", &rows);
    printf("Geben Sie die Anzahl der Spalten ein: ");
    scanf("%d", &cols);

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

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

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

    // Die resultierende Matrix ausgeben
    printf("\nResultierende Matrix nach der Subtraktion:\n");
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            printf("%d ", result[i][j]);
        }
        printf("\n");
    }

    return 0;
}

Kompilieren und ausführen des Programms:

gcc matrix_subtraction.c -o matrix_subtraction
./matrix_subtraction

Beispielausgabe:

Geben Sie die Anzahl der Zeilen ein: 2
Geben Sie die Anzahl der Spalten ein: 2
Geben Sie die Elemente der ersten Matrix ein:
Geben Sie das Element [0][0] ein: 5
Geben Sie das Element [0][1] ein: 6
Geben Sie das Element [1][0] ein: 7
Geben Sie das Element [1][1] ein: 8
Geben Sie die Elemente der zweiten Matrix ein:
Geben Sie das Element [0][0] ein: 1
Geben Sie das Element [0][1] ein: 2
Geben Sie das Element [1][0] ein: 3
Geben Sie das Element [1][1] ein: 4

Resultierende Matrix nach der Subtraktion:
4 4
4 4

Codeerklärung:

  • Eine neue verschachtelte Schleife wurde hinzugefügt, um die result-Matrix auszugeben.
  • printf("%d ", result[i][j]) gibt jedes Element aus.
  • Ein zusätzliches printf("\n") erzeugt nach jeder Zeile eine neue Zeile.
  • Die Ausgabe zeigt die Matrix mit den subtrahierten Werten.

Zusammenfassung

In diesem Labor haben Sie gelernt, wie man in einem C-Programm zur Matrixsubtraktion die Matrixdimensionen und -elemente über Benutzereingaben liest. Das Programm ermöglicht es Benutzern, die Größe und die Werte von zwei Matrizen einzugeben, die dann in zwei zweidimensionalen Arrays gespeichert werden. Dieser Schritt bildet die Grundlage für den folgenden Schritt, bei dem die entsprechenden Elemente der beiden Matrizen subtrahiert und die resultierende Matrix ausgegeben wird.

Das Programm fordert den Benutzer auf, die Anzahl der Zeilen und Spalten einzugeben, und führt ihn dann durch die Eingabe der Elemente der ersten und zweiten Matrix. Dies stellt sicher, dass das Programm Matrizen unterschiedlicher Größe korrekt verarbeiten und die Eingabedaten für die weitere Verarbeitung speichern kann.