| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2674 人关注过本帖
标题:求助!!如何用一次操作,修改所有数组元素的值
取消只看楼主 加入收藏
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
结帖率:63.64%
收藏
 问题点数:0 回复次数:6 
求助!!如何用一次操作,修改所有数组元素的值
例如:有一个数组(ARR):
Dim ARR(80000) As Long
ARR(0) = 1
ARR(1) = 2
ARR(2) = 3
...
...
ARR(N) = N

用什么方法可以一次性的给数组的每个元素都加5?
我可以用循环来实现:
For p = LBound(ARR) To UBound(ARR)
    ARR(p) = ARR(p) + 5
Next

但是这种方法很慢,每次执行,都要循环80000次,有没有快速的方法,一次性的给所有的元素都加一个值
搜索更多相关主题的帖子: 元素 
2010-03-15 11:49
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用haigecnpeng在2010-3-15 12:59:38的发言:

到用的时候再加好了

谢谢您的回复!!!

我的意思是这样的:
For p = LBound(ARR) To UBound(ARR)
    ARR(p) = ARR(p) + 5
Next
上面的代码是嵌套在其它循环中,外层还有若干次的循环,导致程序执行到这里时,都要再次的重复80000次,最终使得整个过程执行效率很慢,我想问有没有办法,让其一次性给所有元素,都加一个值;
2010-03-15 13:10
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用bczgvip在2010-3-15 13:38:06的发言:

一定要都加上去吗?
版主,您好!!!

是的,都加上去,但外层循环控制着每次相加的数,如:
第一次循环:ARR(p) = ARR(p) + 5
第二次循环:ARR(p) = ARR(p) + 7
第三次循环:ARR(p) = ARR(p) + 4
... ...
... ...

我想问:有没有类似于COPYMemory,或是其它方法可以实现?
2010-03-15 13:55
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用Dev1il在2010-3-15 14:22:36的发言:

你这貌似全部输出的都是 5 7 4 样,怎么使app(i+1)=app(i)+5啊,我是个新手,但这样写要发生越界现象
不是app(i+1)=app(i)+5
而是app(i)=app(i)+5
不会有越界现象。
至于5,7,4,我只是举例说明,实际上,它是在外层循环中,通过其它代码的运行而得到的。
我的问题的重点是要数组中各个元素都加上相同的数
还有,我在一楼中举的例子是:
Dim ARR(80000) As Long
ARR(0) = 1
ARR(1) = 2
ARR(2) = 3
...
...
ARR(N) = N '(给元素赋初值,是顺序递增的,但实际情况是无顺的)
2010-03-15 14:43
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
谢谢回复!!!
看来只能用循环了。

我原本想着数组有一种“矩阵”算法,
能实现:数组A = 数组B + 数组C
等同于:A(0) = B(0)+ C(0)
        A(1) = B(1)+ C(1)
        ...  ...
        ...  ...

看来,这种想法是错误的
谢谢,诸位的回复!!!
2010-03-15 15:50
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
朋友:谢谢您:
开始我也想到Split函数,但是不行,

举一个简单的例子:

Dim Arr(2) As Long
Dim B As Long
B = 5
'给数组Arr赋初值:
Arr(0) = 18
Arr(1) = 7
Arr(2) = 41

'给数组Arr的所有元素都加B
Arr(0) = Arr(0) + B
Arr(1) = Arr(1) + B
Arr(2) = Arr(2) + B

'运算结果:
Print Arr(0) '结果是:23
Print Arr(1) '结果是:12
Print Arr(2) '结果是:46

上面的例子,只有三个元素,不存在速度慢的问题,可是有几万个元素,速度就慢了。
2010-03-21 10:47
William1949
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:111
专家分:0
注 册:2009-3-17
收藏
得分:0 
以下是引用bczgvip在2010-3-21 10:33:55的发言:

= =;
还没结贴吗?都说了,没办法。
用别的方法实现吧。
版主:您好

怎么结贴?为什么会提示:
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-03-21 10:56
快速回复:求助!!如何用一次操作,修改所有数组元素的值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017653 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved