m0_74749762 2024-05-14 16:27 采纳率: 0%
浏览 2

c++矩阵乘法运算哪里错误

帮忙看一下我写的这个矩阵类里的矩阵乘法函数哪里有问题呗

class Matrix {
private:
    double* a;//用户输入的数组
    double* c;//用于进行计算数组
    int row, col;
public:
    //输入矩阵
    double* set(int m, int n) {
        row = m;
        col = n;
        a = new double[m * n];
        
        for (int i = 0;i < row;i++) {
            cout<<"第"<<i+1<<"行:\n";
            for (int j = 0;j < col;j++) {
                cin >> *(a + i * col + j);
            }
        }
        return a;
    }
    double* Multiply(double* b, int row1, int col1) {
        c = new double[row * col1];
        if (col == row1) {
            for (int i = 0;i < row;i++) {
                for (int j = 0;j < col1;j++) {
                    for (int k = 0;k < col;k++) {
                        double x = *(c + i * col1 + j);
                        *(c + i * col1 + j) = x+(*(a + i * col + k))* (*(b + k * col1 + j));
                    }
                }
            }
        }
        else {
            printf("数组维度不同");
        }
        col = col1;
        return c;
    }
    void Show()
    {
        for (int i = 0;i < row;i++) {
            for (int j = 0;j < col;j++) {
                cout<< *(c + i * col + j) << "\t";
            }
            cout << "\n";
        }
    }
};

  • 写回答

2条回答 默认 最新

  • 专家-皆知 2024-05-14 16:27
    关注

    请检查矩阵乘法中数组索引越界和内存管理。

    以上回复有部分引自免费微信小程序:皆我百晓生。 如问题尚未解决,还请稍待,如有疑问请回复进一步沟通。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月14日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件