Matrix -Multiplikationscode funktioniert nicht richtigC++

Programme in C++. Entwicklerforum
Anonymous
 Matrix -Multiplikationscode funktioniert nicht richtig

Post by Anonymous »

Warum liefert mein C ++ - Code für die Matrixmultiplikation falsche Ergebnisse bei der Verwendung von Zeigerarithmetik? Der Versuch, die Matrixmultiplikation in C ++ zu implementieren, verwende ich Zeigerarithmetik, um auf Matrixelemente zuzugreifen. Mein Programm liefert jedoch falsche Ergebnisse. Hier ist der Code, den ich bisher geschrieben habe: < /p>
#include
#include

void multiply_matrices(int* A, int* B, int* C, int n) {
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
*(C + i * n + j) = 0; // Clear the element in C
for (int k = 0; k < n; ++k) {
*(C + i * n) += *(A + i * n + k) * *(B + k * n + j);
}
}
}
}

int main() {
int n = 3;
int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int B[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int C[9] = {0}; // Resultant matrix

multiply_matrices(A, B, C, n);

std::cout
Die erwartete Ausgabe für die Multiplikation der Matrizen: < /p>
Matrix A:
1 2 3
4 5 6
7 8 9

Matrix B:
9 8 7
6 5 4
3 2 1
< /code>
sollte sein: < /p>
Matrix C (result):
30 24 18
84 69 54
138 114 90
< /code>
Frage: < /h3>
Kann jemand erklären, was ich falsch mache und warum das Multiplikationsergebnis falsch ist? Ich vermute, es könnte ein Problem damit geben, wie ich mit Zeigern auf Matrixelemente zugegriffen habe.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post