C写的矩阵相乘问题,求大神帮忙改改错误,算法应该有没错,不写时间长了,好的语法错误,都不知怎么改

谢谢啦,改出来了给分,好的肯定会追加的,孩子的作业明天要交了#include"stdafx.h"#include"iostream.h"#include"math.h"/... 谢谢啦,改出来了给分,好的肯定会追加的,孩子的作业明天要交了
#include "stdafx.h"
#include "iostream.h"
#include "math.h"
//矩阵相乘
int multi_array(int*array_one,int*array_two,int m1,int m2,int n1,int n2)
{
/*****合法性判断******/
if(n1!=m2)cout<<"这两个矩阵无法相乘"<<endl;
else
{ int *array_result=new int[m1][n2];
for(int i=0;i<m1;i++)
for(int j=0;j<n2;j++)
{
for(int s=0;s<n1;s++)array_result[i][j]=array_one[i][s]*array_two[s][j];
}
//输出矩阵
for(i=0;i<m1;i++){
for(j=0;j<n2;j++)
{
cout<<array_result[i][j];
}
cout<<endl;
}
};
return 0;
}
//矩阵相加
int add_array(int*array_one,int*array_two,int m1,int m2,int n1,int n2)
{
/*****合法性判断******/
if(m1!=m2||n1!=n2)cout<<"这两个矩阵不是同型矩阵"<<endl;
else
{ int *array_result=new int[m1][n1];
for(int i=0;i<m1;i++)
for(int j=0;j<0;j++)
{
array_result[i][j]=array_one[i][j]+array_two[i][j];
}
//输出矩阵
for(i=0;i<m1;i++){
for(j=0;j<n2;j++)
{
cout<<array_result[i][j];
}
cout<<endl;
}
};
return 0;
}
//矩阵相减
int subduction_array(int*array_one,int*array_two,int m1,int m2,int n1,int n2)
{/*****合法性判断******/
if(m1!=m2||n1!=n2)cout<<"这两个矩阵不是同型矩阵"<<endl;
else
{ int *array_result=new int[m1][n1];
for(int i=0;i<m1;i++)
for(int j=0;j<0;j++)
{
array_result[i][j]=array_one[i][j]-array_two[i][j];
}
//输出矩阵
for(i=0;i<m1;i++){
for(j=0;j<n2;j++)
{
cout<<array_result[i][j];
}
cout<<endl;
}
};
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
/**************矩阵输入******************/
cout<<"请输入第一个矩阵的行数和列数"<<endl;
int m1=m2=0; //行数
int n1=n2=0; //列数
cin>>m1>>n1;
cout<<"请输入第二个矩阵的行数和列数"<<endl;
cin>>m2>>n2;
int*Array_one=new int[m1][n1]; //动态分配内存
int*Array_two=new int[m2][n2]; //分配内存
//输入第一个矩阵
for(int i=0;i<m1;i++)
for(int j=0;j<n1;j++)
{ cout<<"请输入第"<<i<<"行"<<j<<"列的元素"<<endl;
cin>>Array_one[i][j]
}
//输入第二个矩阵
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
{ cout<<"请输入第"<<i<<"行"<<j<<"列的元素"<<endl;
cin>>Array_one[i][j]
}
/***************矩阵运算*********************/
cout<<"请输入要运算的算符"<<endl;
char sign;
cin<<sign;
switch(sign)
{ case '*': multi_array(Arry_one,Array_two,m1,m2,n1,n2);
case '+': add_array(Array_one,Array_two,m1,m2,n1,n2);
case '-': subduction_array(Array_one,Array_two,m1,m2,n1,n2);
}
return 0;
}
展开
 我来答
夜神月YOONA
2013-03-12 · TA获得超过339个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:253万
展开全部
这个代码风格实在是.... 有几个很明显的错误,
int multi_array(int*array_one,int*array_two,int m1,int m2,int n1,int n2)
应该是传2维指针
int multi_array(int**array_one,int**array_two,int m1,int m2,int n1,int n2)

动态创建二维数组不是
int *array_result=new int[m1][n2];

而是:
int**array_result=new int*[m1];
for(int i=0;i<m1;++i)array_result[i]=new int[m2];

不知道还有没其他错误。
追问
好的,我先改一改,还有一些错误,还麻烦再帮忙看一看
追答
矩阵相乘的函数错了,
int multi_array(int**array_one,int**array_two,int m1,int m2,int n1,int n2)
{
/*****合法性判断******/
if(n1!=m2)cout<<"这两个矩阵无法相乘"<<endl;
else
{ int **array_result=new int*[m1];
for(int i=0;i<m1;++i)array_result[i]=new int[n2];
for(int i=0;i<m1;i++)
for(int j=0;j<n2;j++)
{
array_result[i][j]=0;
for(int s=0;s<n1;s++)array_result[i][j] += array_one[i][s]*array_two[s][j];
}
//输出矩阵

在矩阵相减里面
for(int j=0;j<0;j++)
j<0是错的
laozibi
2013-03-13 · TA获得超过7966个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:4602万
展开全部
这种编码风格是....
诠释multi_array中有几个明显的错误。复杂性(array_one,INT * array_two诠释M1,M2诠释,诠释N1,诠释N2)
应该是通的2维指针
诠释multi_array的。复杂性(** array_one数组array_two,诠释诠释平方米,诠释N1,M1,N2)

动态创建一个二维数组是不
INT * array_result =新诠释[M1] [N2];

但是:
诠释** array_result =新的诠释* [M1];
(INT I = 0;我<M1 + + I)array_result [我] =新的int [M2];

不知道有没有其他的错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式