c++ - 在C++中将两个矩阵相乘
问题描述
我试图在 C++ 中将两个矩阵相乘,但结果不正确!
你能告诉我我的代码有什么问题吗?!
#include<iostream>
#include <stdio.h>
#include <stdlib.h>
#include <omp.h>
//more detail
using namespace std;
#define WIDTH1 3
#define HEIGHT1 3
#define WIDTH2 3
#define HEIGHT2 3
#define WIDTH3 3
#define HEIGHT3 3
int A[HEIGHT1][WIDTH1];
int B[HEIGHT2][WIDTH2];
int C[HEIGHT3][WIDTH3];
int n, m;
int y = 0;
//more detail :)
int main() {
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
cin >> m;
A[i][j] = m;
}
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
cin >> n;
B[i][j] = n;
}
//more detail :)
for (int i = 0; i < 3; i++)
{
int k = 0;
int sum = 0;
int sum2 = 0;
int sum3 = 0;
for (int j = 0; j < 3; j++)
{
int sum = A[i][j] * B[j][i];
sum += sum;
}
B[i][y] = sum;
y = y + 1;
for (int j = 0; j < 3; j++)
{
int sum2 = A[i][j] * B[j][i];
sum2 += sum2;
}
B[i][y] = sum2;
y = y + 1;
//more detail :)
for (int j = 0; j < 3; j++)
{
int sum3 = A[i][j] * B[j][i];
sum3 += sum3;
}
B[i][y] = sum3;
y = y + 1;
}
for (int i = 0; i < 3; i++)
for (int j = 0; j < 1; j++)
{
cout << B[i][j] <<"\t" << B[i][j+1] << "\t" << B[i][j+2] << "\n" ;
}
return 0;
//more detail :)
}
解决方案
你认为这有什么作用:
for (int j = 0; j < 3; j++)
{
int sum = A[i][j] * B[j][i];
sum += sum;
}
与你的原作有关sum
吗?它什么也没做。
不要重新声明相同的变量。
for (int j = 0; j < 3; j++)
{
sum += A[i][j] * B[j][i];
}
推荐阅读
- r - 如何将单个元素中的逗号分隔值更改为多列并分配数字编码
- database - 哪个更好 - 在 MYSQL 中将值存储为数字 VS 实际值?
- r - 从 r 中的每组中选择前五个值
- python - 如何从python中的字符串中删除空格、换行符等
- applescript - AppleScript 将文件夹内容移动到另一台计算机
- python - 类属性与方法参数性能?Python
- python - Numpy添加外部,字符串更改?
- asp.net - 该进程无法访问 file.xlsx',因为它正被另一个进程使用。将数据从 ASPX 导出到 EXCEL 文件时
- javascript - 箭头函数中的可选参数
- java - 为什么即使数据库已清空,HSQLDB 在多次插入后仍会产生 OutOfMemoryError?