主题:数组阶乘
773950918
[专家分:0] 发布于 2010-05-26 17:34:00
数组阶乘输出时只有第一排数,后面就不知什么??为什么会这样??请教??请细说!谢谢哦!!
#include<iostream>
using namespace std;
int matrix_multi(double a[][5],double b[][3], double c[][3],int l,int m,int n)
{
int i,j,k;
for(i=0;i<1;i++)
for(j=0;j<n;j++)
{
c[i][j]=0;
for(k=0;k<m;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
return c[i][j];
}
int main()
{
double a[4][5]={
1.0, 3.0, -2.0, 0.0, 4.0,
-2.0, -1.0, 5.0, -7.0, 2.0,
0.0, 8.0, 4.0, 1.0, -5.0,
3.0, -3.0, 2.0, -4.0, 1.0
};
double b[5][3]=
{
4.0, 5.0, -1.0,
2.0, -2.0, 6.0,
7.0, 8.0, 1.0,
0.0, 3.0, -5.0,
9.0, 8.0, -6.0
};
double c[4][3];
matrix_multi(a,b,c,4,5,3);
cout<<"The result is c="<<endl;
for(int i=0;i<4;i++)
{
for(int j=0;j<3;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
return 0;
}
最后更新于:2010-05-26 18:10:00
回复列表 (共15个回复)
沙发
雪光风剑 [专家分:27190] 发布于 2010-05-26 19:21:00
说个最简单的修改方法:函数的这个形参double c[][3],
修改为double& c[][3],
你现在的问题出在函数内计算的结果不能正确传回main函数,传递引用即可结局
板凳
773950918 [专家分:0] 发布于 2010-05-26 21:56:00
高手这样不行啊!为什么引用调用有错误?
3 楼
773950918 [专家分:0] 发布于 2010-05-26 22:17:00
error C2234: '<Unknown>' : arrays of references are illegal
: error C2111: pointer addition requires integral operand
: error C2440: 'return' : cannot convert from 'double *' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast
: error C2664: 'matrix_multi' : cannot convert parameter 3 from 'double [4][3]' to 'double *[][3]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.
4 楼
雪光风剑 [专家分:27190] 发布于 2010-05-26 22:23:00
额,调试了一下,传递数组的引用要指定每一维……
类似这么用double (&c)[4][3]
5 楼
773950918 [专家分:0] 发布于 2010-05-26 22:39:00
加没加之前都是一样啊!!只能输出第一行数,后面的就是乱程序啊!就不知是什么?
6 楼
耶路撒冷 [专家分:650] 发布于 2010-05-26 22:41:00
这个是二维数组?
double b[5][3]=
{
4.0, 5.0, -1.0,
2.0, -2.0, 6.0,
7.0, 8.0, 1.0,
0.0, 3.0, -5.0,
9.0, 8.0, -6.0
};
我只在matlab里遇到,c++还可以这样写?解释一哈,嘿嘿
7 楼
773950918 [专家分:0] 发布于 2010-05-26 22:48:00
是二维数组!要double b[15]这样表达吗?还是?请教!
8 楼
773950918 [专家分:0] 发布于 2010-05-26 22:58:00
C++数组就是这样表达的啊!!
9 楼
耶路撒冷 [专家分:650] 发布于 2010-05-26 22:59:00
我突然发现了在一个很猥琐的地方有个错误,大意了,楼主看看,l(字母)和1(数字)是不是很像啊,你看看你这里 for(i=0;i<1;i++)就知道原因了,哈哈哈哈哈。。。。。。。。。。。。
10 楼
773950918 [专家分:0] 发布于 2010-05-26 23:03:00
不是!
我来回复