矩阵的乘法 求答案!谢谢啦 !!

[复制链接]
查看11 | 回复1 | 2011-11-12 10:29:18 | 显示全部楼层 |阅读模式
描述设矩阵inta[4][3],矩阵intb[3][5]。矩阵的数据由用户输入。输出新的矩阵c=a*b.输出格式:c00c01c02c03c04c10c11c12c13c14c20c21c22c23c24c30c31c32c33c34矩阵乘法的计算方法:对于矩阵A[m][q]*B[q][n],相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有C[j]=A[0]*B[0][j]A[1]*B[1][j].....A[q]*B[q][j]注意:实际矩阵大小不一定是4*3和3*5,请仔细阅读下面的输入说明关于输入第一行为第一个矩阵的大小x1和y1(1=x1=100,1=y1=100),后面跟着x1行,每行有y1个整数,代表第一个矩阵;接下来一行,为第二个矩阵的大小x2和y2(1=x2=100,1=y2=100,题目保证x2和y1相等),后面跟着x2行,每行有y2个整数,代表第二个矩阵。题目保证运算结果在int型表示范围内。输入图示如下:x1y1a00a01a02a10a11a12a20a21a22a30a31a32x2y2b00b01b02b03b04b10b11b12b13b14b20b21b22b23b24关于输出输出一共有x1行,每行包括空格分隔的y2个整数,代表乘积矩阵c。注意行末不要有空格输出图示如下:c00c01c02c03c04c10c11c12c13c14c20c21c22c23c24c30c31c32c33c34例子输入431234567891011123578910114567812345例子输出18243036425469849911490114138162186126159192225258提示注意行末不要有空格
回复

使用道具 举报

千问 | 2011-11-12 10:29:18 | 显示全部楼层
#includeiomanipclassArr{public:Arr(){x=0;y=0;p=NULL;}~Arr(){for(inti=0;ix;i)delete[]p;delete[]p;}intgetX();intgetY();int**getP();voidinputArr(intx,inty);private:intx,y;int**p;};voidArr::inputArr(intm,intn){inti,j;x=m;y=n;p=newint*[m];for(i=0;im;i)p=newint[n];for(i=0;ix;i){for(j=0;jy;j)cinp[j];}}intArr::getX(){returnx;}intArr::getY(){returny;}int**Arr::getP(){returnp;}int**multiArr(Arra,Arrb){inti,j,k;int**a1,**b1,**c1;c1=newint*[a.getX()];for(i=0;ia.getX();i)c1=newint[b.getY()];a1=a.getP();b1=b.getP();for(i=0;ia.getX();i){for(j=0;jb.getY();j){for(k=0;ka.getY();k){c1[j]=a1[k]*b1[k][j];}}}returnc1;}intmain(intargc,char*argv[]){Arra,b;int**c;intx1,y1,x2,y2,i;cout\"inputtherowandcolumnoffirstarray:\"endl;cinx1y1;a.inputArr(x1,y1);cout\"inputtherowandcolumnofsecondarray:\"endl;cinx2y2;b.inputArr(x2,y2);if(a.getY()==b.getX()){c=newint*[a.getX()];for(i=0;ia.getX();i)c=newint[b.getY()];c=multiArr(a,b);cout\"theresultis:\"endl;for(i=0;ia.getX();i){for(intj=0;jb.getY();j)coutsetw(6)c[j];coutendl;}}elsecout\"thetwoarraydon\'tmultiplicate!\"endl;return0;}可能有点小问题,不过不影响正常运行!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行