by Anonymous » 23 Feb 2025, 18:18
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.
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 [url=viewtopic.php?t=11587]Problem[/url] damit geben, wie ich mit Zeigern auf Matrixelemente zugegriffen habe.