C++中动态数组(矩阵相乘)

一维动态数组:

初始化:int *p=new int[n];

销毁:delete[] p;

二维动态数组:

初始化:

int **p=new int* [row];

for(i=0;i<row;i++){

p[i]=new int[cloum];

}

销毁:

for(i=0;i<row;i++){

delete[] p[i];

}

p=NULL;

例子:使用动态数组去求矩阵相乘

int row,cloum,row1,cloum1;

    cout<<"请输入第一个二维数组的行和列:"<<endl;

    cin>>row>>cloum;

    //输入动态二维数组

    int **p=new int* [row];

    int i;

    for(i=0;i<row;i++){

        p[i]=new int[cloum];

    }

    int j;

    cout<<"请输入第一个二维数列:"<<endl;

    for(i=0;i<row;i++){

        for(j=0;j<cloum;j++){

            cin>>p[i][j];

        }

    }

    while(1){

        cout<<"请输入第二个二维数组的行和列:"<<endl;

        cin>>row1>>cloum1;

        if(cloum!=row1){

            cout<<"重新输入,无法计算"<<endl;

            continue;

        }else{

            break;

        }

    }

    int **p1=new int* [row1];

    for(i=0;i<row1;i++){

        p1[i]=new int[cloum1];

    }

    cout<<"请输入第二个二维数列:"<<endl;

    for(i=0;i<row1;i++){

        for(j=0;j<cloum1;j++){

            cin>>p1[i][j];

        }

    }

    cout<<"矩阵相乘的结果:"<<endl;

    int k,a[row][cloum1];

    for(i=0;i<row;i++){

        for(j=0;j<cloum1;j++){

            a[i][j]=0;  //初始化结果矩阵

            for(k=0;k<cloum;k++){

                a[i][j]+=p[i][k]*p1[k][j];

            }

        }

    }

    for(i=0;i<row;i++){

        for(j=0;j<cloum1;j++){

            cout<<a[i][j]<<" ";

        }

        cout<<endl;

    }

    for(i=0;i<row;i++){

        delete[] p[i];

    }

    p=NULL;

    for(i=0;i<row1;i++){

        delete[] p1[i];

    }

    p1=NULL;

结果截图:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容