c++矩阵相乘的初始值问题
2017-05-06 10:43
381 查看
相信很多人在二维数组相乘的时候发现了值出错的问题 其实是很小的问题。原因在于我们在使用+=的时候第一次循环的时候数组的值是空造成+=的时候第一个数据是指针造成程序错误;
当一个矩阵使用+=的时候一定要注意初始值
如果不给初值第一个数组+=的时候回乱造成混乱
void CMFCApplication1View::OnCad32771()
{
}
当一个矩阵使用+=的时候一定要注意初始值
如果不给初值第一个数组+=的时候回乱造成混乱
void CMFCApplication1View::OnCad32771()
{
CClientDC *pDC; pDC = new CClientDC(this); double point[4][2] = { { 100, 300 }, { 100, 150, }, { 400, 50 }, { 600, 300 } }; double bezier[4][4] = { { -1, 3, -3, 1 }, { 3, -6, 3, 0 }, { -3, 3, 0, 0 }, { 1, 0, 0, 0 } }; double mid[4][2]; pDC->MoveTo(point[0][0], point[0][1]); for (int i = 1; i < 4; i++){ pDC->LineTo(point[i][0], point[i][1]); } pDC->MoveTo(point[0][0], point[0][1]); for (int i = 0; i<4; i++){ for (int j = 0; j<2; j++){ double m = 0;//这样就可以避免数组的初值是空的 for (int k = 0; k<4; k++){ m += (bezier[i][k] * point[k][j]); } mid[i][j] = m;//使用给了初值的m来+= 在进行接收; } } for (double t = 0.00; t <= 1.0; t += 0.01) { double fin[2]; double tt[1][4] = { t*t*t, t*t, t, 1 }; for (int i = 0; i < 2; i++){ double m = 0; for (int j = 0; j < 4; j++){ m+=tt[0][j] * mid[j][i]; } fin[i] = m; } pDC->LineTo(fin[0], fin[1]); }
}
相关文章推荐
- 动态规划经典问题——求矩阵相乘的最佳顺序
- C++:矩阵相乘
- C++实现两个矩阵相乘
- Java实现用传统分治法解决矩阵相乘问题
- C++动态建立矩阵及矩阵相乘
- 从易到难编写C++程序,(8)问题:实现一个矩阵类
- 问题五十二:怎么用C++实现矩阵运算
- 矩阵相乘C++代码
- C++代码--两不同型矩阵相乘实现程…
- 实现稀疏矩阵相乘C/C++
- 矩阵相乘问题
- 深入分析C++中两个大数相乘结果不正确的问题
- 杭电1575问题 矩阵相乘问题
- C++内置类型的成员变量初始值的问题探讨
- 荷兰国旗问题、矩阵相乘之Strassen算法
- 矩阵相乘求最少相乘次数的C++实现代码
- opencv2.0以后新增C++接口的 Mat矩阵 单行赋值及矩阵合并的问题与实现(苦心研究多天才解决!)
- c++实现两个矩阵相乘
- 拉丁矩阵问题 利用回溯法的C++实现方案
- 算法笔记_003:矩阵相乘问题【分治法】