Langdon1996
罗蜜斯丹
采纳率57.1%
2016-04-07 14:05

C++矩阵乘法-输入第二个矩阵数据后程序崩溃?

//初始化第二个矩阵的数据后程序崩溃了?为什么呢?
#include
using namespace std;

int main()
{
a:
int m,n,r,c;
cout<<"请输入第一个矩阵的行与列"< cin>>m>>n;
cout<<"请输入第二个矩阵的行与列"< cin>>r>>c;
if(n!=r)
{
cout<<"对不起,你输入的两个矩阵不能进行矩阵乘法运算"< goto a;
}
int **matrix1=new int *[m];//先定义二位指针,实质是指向以为数组的指针
for(int i=0;i matrix1[i]=new int [n];
int **matrix2=new int *[r];
for(int i=0;i matrix2[i]=new int [c];
//两个二位数组设置好了,现在进行初始化数据
cout for(int i=0;i for(int j=0;j cin>>matrix1[i][j];
cout<<"现在请输入第二个矩阵的数据,请逐行输入"< for(int i=0;i for(int j=0;j cin>>matrix2[i][j];
//打印原始矩阵
cout<<"第一个矩阵"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<matrix1[i][j];
cout<<endl;
}
cout<<"第二个矩阵"<<endl;
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
cout<<matrix2[i][j];
}

//数据初始化完毕,进行矩阵乘法的运算;
int **matrix=new int *[m];
for(int i=0;i<c;i++)
matrix[i]=new int [c];
for(int i=0;i<m;i++)
for(int j=0;j<c;j++)
{
int k=0;
while (k<n)
{
matrix[i][j]+=matrix1[i][k]*matrix2[k][j];
k++;

}

    }   

//打印结果矩阵
for(int i=0;i<m;i++)
{
for(int j=0;j<c;j++)
cout<<matrix[i][j];
cout<<endl;
}

//错误 int **matrix2=new int [r][c];
return 0;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前

    如果回答解决,请记得点下我回答右边的采纳,谢谢

    点赞 1 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 5年前
        for(i=0;i<c;i++) //这里是r不是c
            matrix2[i]=new int [c]; 
    
    
    点赞 1 评论 复制链接分享
  • stadyhungry you都是我的 5年前
     int _tmain(int argc, _TCHAR* argv[])
    {
    a:
        int m,n,r,c;
        cout<<"请输入第一个矩阵的行与列"<<endl;
        cin>>m>>n;
        cout<<"请输入第二个矩阵的行与列"<<endl;
        cin>>r>>c;
        if(n!=r)
        {
            cout<<"对不起,你输入的两个矩阵不能进行矩阵乘法运算"<<endl;
            goto a;
        }
        int **matrix1=new int *[m];//先定义二位指针,实质是指向以为数组的指针 
        for(int i=0; i < m; i++)
            matrix1[i]=new int [n]; 
    
        int **matrix2=new int *[r];
            for(int i=0; i < r; i++)
                matrix2[i]=new int [c];
    
        //两个二位数组设置好了,现在进行初始化数据
        cout<<"现在请输入第一个矩阵的数据,请逐行输入"<< endl;
        for(int i=0; i < m; i++)
            for(int j=0; j < n; j++)
                cin>>matrix1[i][j];
    
        cout<<"现在请输入第二个矩阵的数据,请逐行输入"<< endl;
        for(int i=0; i < r; i++)
            for(int j=0; j < c; j++)
                cin>>matrix2[i][j];
    
        //打印原始矩阵
        cout<<"第一个矩阵"<<endl; 
        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
                cout<<matrix1[i][j] << " "; 
            cout<<endl;
        }
        cout<<"第二个矩阵"<<endl;
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
                cout<<matrix2[i][j] << " "; 
            cout<<endl;
        }
        //数据初始化完毕,进行矩阵乘法的运算;
        int **matrix=new int *[m];
        for(int i=0;i<m;i++)
            matrix[i]=new int [c];
    
        for(int i=0;i<m;i++)
            for(int j=0;j<c;j++)
            {
                matrix[i][j] = 0;
                int k=0;
                while (k<n)
                {
                    matrix[i][j] += matrix1[i][k]*matrix2[k][j];
                    k++;
                }
            }   
            //打印结果矩阵
            cout<<"结果:"<<endl;
            for(int i=0;i<m;i++)
            {
                for(int j=0;j<c;j++)
                    cout<<matrix[i][j] << " ";
                cout<<endl; 
            }
            //错误 int **matrix2=new int [r][c];
    
            return 0;
    }
    
    点赞 评论 复制链接分享
  • stadyhungry you都是我的 5年前

    代码都不全 看的蛋疼

    点赞 评论 复制链接分享

相关推荐