编程求两个矩阵的乘积(C++)

来源:互联网 发布:手写输入法软件下载 编辑:程序博客网 时间:2024/06/17 09:04
动态分配数组内存,在程序运行快要结束时需要释放内存
#include<iostream>using namespace std;#include<Cstdlib>int main(){    int n,k,m,i,j,t;    cin>>n>>k>>m;//a数组n行k列,b数组k行m列    int **a;    a=new int*[n];//建立n个指针,存储n行    if(a==NULL)    {        cout<<"no enough memory"<<endl;        exit(-1);    }    for(i=0;i<n;i++)    {        a[i]=new int [k];//为每行分配k个空间        if(a[i]==NULL)        {            cout<<"no enough memory"<<endl;            exit(-1);        }    }    cout<<"intput a"<<endl;    for(i=0;i<n;i++)        for(j=0;j<k;j++)        cin>>a[i][j];    int **b;    b=new int *[k];    if(b==NULL)    {        cout<<"no enough memory"<<endl;        exit(-1);    }    for(i=0;i<k;i++)    {        b[i]=new int [m];        if(b[i]==NULL)        {            cout<<"no enough memory"<<endl;            exit(-1);        }    }    cout<<"input b"<<endl;    for(i=0;i<k;i++)        for(j=0;j<m;j++)        cin>>b[i][j];    int **c;    c=new int*[n];    if(c==NULL)    {        cout<<"no enough memory"<<endl;        exit(-1);    }    for(i=0;i<n;i++)    {       c[i]=new int [m];       if(c[i]==NULL)        {            cout<<"no enough memory"<<endl;            exit(-1);        }    }    for(i=0;i<n;i++)        for(j=0;j<m;j++)    {        c[i][j]=0;        for(t=0;t<k;t++)            c[i][j]+=a[i][t]*b[t][j];    }    cout<<"output c"<<endl;    for(i=0;i<n;i++)    {        for(j=0;j<m;j++)        cout<<c[i][j]<<" ";        cout<<endl;    }    for(i=0;i<n;i++)        delete [] a[i];    delete [] a;    for(i=0;i<k;i++)        delete []b[i];    delete b;    for(i=0;i<n;i++)        delete []c[i];    delete []c;    return 0;}

0 0
原创粉丝点击