2 u010681379 u010681379 于 2015.05.26 20:33 提问

关于三维数组的输出问题

#include
#include
#include
#include
using namespace std;
#define pi 3.1415;
#define a 2
#define R 300
#define H 300
#define n 10
#define LB
int main()
{
int i,j,k;
double x[H][LB][R*n],y[H][LB][R*n],z[H];
double v[H][R*n][2],vk[H][R*n][2],vkz[H][R*n][2];
for(i=0;i<R*n;i++)
{
v[0][i][0]=(-i/n)*sin(i/n)+cos(i/n);
}
for(i=0;i<R*n;i++)
cout<<v[0][i][0]<<endl;
return 0;
}
这个编译没问题,但是无法得到结果输出,请问如何解决啊

5个回答

wsh1992o
wsh1992o   Rxr 2015.05.26 21:53

要不你试下把数组初始化一下
然后再运行
就你给出的程序而言,并不需要用到三维数组
你可以先弄成一维的
double v[n*R]=0;试试
for(int i=0;i<n*r;i++)
v[i]=(-i/n)*sin(i/n)+cos(i/n);

frank_20080215
frank_20080215   2015.05.26 20:53

double x[H][LB][R*n],y[H][LB][R*n],z[H];
数组的维度定义时,应该用常量。而不应该用计算表达式。

u010681379
u010681379 但问题的关键不在这啊,我及时全部改成了常量还是出不来结果。拿那个LB是打掉了,也是有一个初值的
2 年多之前 回复
frank_20080215
frank_20080215   2015.05.27 07:27

缺少数组初始化,还没有分配空间

91program
91program   Ds   Rxr 2015.05.27 07:34

应该是数据类型的问题,代码 -i/n 执行的结果,在 i 小于 n 的情况下都是零。
如果还找不到答案,建议你调试一下,将下面的语句:

 v[0][i][0]=(-i/n)*sin(i/n)+cos(i/n);

进行分析,看看各个部分是否得到想要的结果。如果看 v 指定的位置是否正确存在数值。

zhj172
zhj172   2015.05.27 11:28

把i转成double的再做除法

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!