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.
Matrix -Multiplikationscode funktioniert nicht richtig ⇐ C++
-
- Similar Topics
- Replies
- Views
- Last post