主题:为什么不能被赋值?紧急求救!
不才之木
[专家分:0] 发布于 2007-02-05 11:43:00
我的程序中如下一句:t0[a]=u%[0,i]
通过f6我查过u%[0,i]确有值,查t0[a]确=0,查a 不越界,t0[n]数组定义正常,且属第一次调用,前面没出现与t0相冲突的任何名字,此语句是在循环中的,循环to n ,a<n,应无越界问题,且运行中没出现错误提示,仅是结果t0[a]=0而u%[0,i]<>0,
唯一异常的,定义t0[n]时,前面释放了一个二维数组,被释放的数组也与此循环无关,
百思不得其解,请有经验的告我为什么.
回复列表 (共16个回复)
沙发
moz [专家分:37620] 发布于 2007-02-05 17:28:00
看不懂,没有经验。
板凳
不才之木 [专家分:0] 发布于 2007-02-06 12:59:00
回moz老师:事情逼极了,也悟出点什么,对不对请老师指正.
1,是不是qb有这样的限制:一个循环内,不能有两个计数器[我自己的定义],如:
for i=1 to n
内有a=a+1,一个数组在循环内只能x[i],不能x[a],
我必须这样做是我想在一个大的数组内挑几个因子组成新的数组,以前我用一个与i,a都有关系的行列式代替i,有时行有时不行,不稳定,为此我苦恼了20多天.
2,现在猜着看,这是递归问题,用子程序可解决,是不是?
3 楼
moz [专家分:37620] 发布于 2007-02-06 15:35:00
我还是不明白,没经验。
4 楼
moz [专家分:37620] 发布于 2007-02-06 15:48:00
我在想,如果能看到你的代码,我会猜得到点什么。
5 楼
不才之木 [专家分:0] 发布于 2007-02-06 18:35:00
不是我不愿让你看,实在是太长,抄起来太吃力,告诉我能贴上去吗?怎么贴?我先试试子程序的办法,晚上电脑是我儿子的,明天再说.
6 楼
不才之木 [专家分:0] 发布于 2007-02-06 18:37:00
不是我不愿让你看,实在是太长,抄起来太吃力,告诉我能贴上去吗?怎么贴?我先试试子程序的办法,晚上电脑是我儿子的,明天再说.
7 楼
moz [专家分:37620] 发布于 2007-02-06 20:01:00
做人做事,要懂得哪些是必要的哪些是次要的.
没有代码纯粹从你的字里行间中去猜想发生什么事情,我也太白痴了点.
(都能当刑侦去了)
8 楼
不才之木 [专家分:0] 发布于 2007-02-07 23:51:00
代码本质如下:
dim x[200],y[100]
for i=0 to 200
x[i]=fix[rnd[i*10]]
if x[i]=0 then
a=a+1
y[a]=x[i-1]
end if
next i
这些不能执行.现在改成:
dim x[200],y100]
for i=0 to 200
z=x[i-1]
x[i]=fix[rnd[i *10 ]]
if x[i]=0 then
a=a+1
y[a]=z
end if
next i
for i=1 to a
print y[a] 此时y[a]被赋值了
next i
end
现在看真简单,当初真酷恼,
9 楼
moz [专家分:37620] 发布于 2007-02-08 12:50:00
不好意思,我确实有点笨,我还是没能看出点什么来。
而且只感觉到你有点前言不对后语,是我领悟力太差了。
看了你的贴,有几个收获:
1. 我还不知道数组可以用中括号[],我一直以为只能用圆弧括号()呢。
2. 当 i=0 时,x(i-1) 居然不会越界出错。
3. 出现的都是随机数,不知道有什么用。
4.
for i=1 to a
print y(a)
next
好像有点浪费时间,同一个值 y(a) 显示了 a 次,有什么用的?
记得常见的 for 好像不是这个样子用的。
10 楼
不才之木 [专家分:0] 发布于 2007-02-09 02:19:00
1,[ ]问题,我确实一直用[ ],好处是如有问题,回车后就变不成( ),没问题自然就变成( )了,在这里,我写起来[ ]更方便些,另外,我的确不知( )可用,
2,i = 0时,不出错,因为定义数组时0开始,使用时1开始.0不越界,
3,随机数字问题:数字来源与问题无关,我为的是最快的赋予数组数字,实在的,这些数字真实来源的确是随机数字,只不过分布不是正态罢了,这些伪随机数字倒可能是正态的,
我搞的是彩票,有关的数字,
4,最后的循环,我以为不多余,在上面循环里,很难显示y[a],数组,不信你试试.
再说明一下:我的代码前一部分,应该不能运行,会在y[a]=x[i-1]一行出错,但在我的东东里,却可以运行,不过用f6检查等式两侧,一面是0,一面不是0,天知道为什么.
感谢你的直率和真诚!
再补:从前面提到的子程序和递归问题看,的确跑了题,不过那是我当时的假想,既然很简单的能解决,何必再费事绕路那.我的原则一直是得过且过,还请谅解.
qb不完全符合通用的逻辑,a=a+1如是,这个问题也是,习惯思维害人!
我来回复