Почему мой код C ++ для умножения матрицы дает неверные результаты при использовании арифметики указателя? Попытка реализовать умножение матрицы в C ++, и я использую арифметику указателя для доступа к элементам матрицы. Тем не менее, моя программа дает неправильные результаты. Вот код, который я написал до сих пор: < /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
Matrix C (result):
72 0 0
207 0 0
342 0 0
< /code>
ожидаемый вывод: < /h3>
Ожидаемый выход для умножения матриц: < /p>
Matrix A:
1 2 3
4 5 6
7 8 9
Matrix B:
9 8 7
6 5 4
3 2 1
< /code>
должно быть: < /p>
Matrix C (result):
30 24 18
84 69 54
138 114 90
< /code>
Вопрос: < /h3>
Может ли кто -нибудь объяснить, что я делаю не так, и почему результат умножения неверен? Я подозреваю, что может возникнуть проблема с тем, как я получаю доступ к элементам матрицы с использованием указателей.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -correctly
Код умножения матрицы не работает правильно ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1740337212
Anonymous
Почему мой код C ++ для умножения матрицы дает неверные результаты при использовании арифметики указателя? Попытка реализовать умножение матрицы в C ++, и я использую арифметику указателя для доступа к элементам матрицы. Тем не менее, моя программа дает неправильные результаты. Вот код, который я написал до сих пор: < /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
Matrix C (result):
72 0 0
207 0 0
342 0 0
< /code>
ожидаемый вывод: < /h3>
Ожидаемый выход для умножения матриц: < /p>
Matrix A:
1 2 3
4 5 6
7 8 9
Matrix B:
9 8 7
6 5 4
3 2 1
< /code>
должно быть: < /p>
Matrix C (result):
30 24 18
84 69 54
138 114 90
< /code>
Вопрос: < /h3>
Может ли кто -нибудь объяснить, что я делаю не так, и почему результат умножения неверен? Я подозреваю, что может возникнуть проблема с тем, как я получаю доступ к элементам матрицы с использованием указателей.
Подробнее здесь: [url]https://stackoverflow.com/questions/79461591/matrix-multiplication-code-not-working-correctly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия