找回密码
 加入
搜索
查看: 9115|回复: 19

[效率算法] 求怎么让一个变量依次给与一些没有规则的数字呢?[已解决]

 火.. [复制链接]
发表于 2011-5-25 00:21:30 | 显示全部楼层 |阅读模式
本帖最后由 sex123 于 2011-6-2 07:44 编辑

我以前用按键精灵,只懂一点点的循环 while endwhile之类,也懂i=i+1
现在我有个问题,怎么让一个变量i依次是一些没有规则的数字,然后,让变量i走一遍循环呢?
比如,让i等于一些数字 23,45,89,12,44,23,72,21
之后让i进入循环执行有关命今,直到所有的数字都试过一遍呢?
发表于 2011-5-25 03:44:04 | 显示全部楼层
本帖最后由 netegg 于 2011-5-25 03:47 编辑
#include <array.au3>
local $aA =_arraycreate(23, 45, 89, 12, 44, 23, 72, 21)
for $i in $aA
    msgbox(0,0,$i)
next
不知道是不是这意思
 楼主| 发表于 2011-5-26 04:02:21 | 显示全部楼层
差不多吧,可是数组里的数每次都不一定是多少,一般要输入三十个左右。有什么好办法吗?
是不是写个对话框,让用户自已一个一个输入数字。然后让程序跑循环呢?
发表于 2011-5-26 06:23:20 | 显示全部楼层
回复 3# sex123
那要看具体问题了,_arraycreate目前只支持创建20个元素的数组
发表于 2011-5-26 06:29:00 | 显示全部楼层
lobal $string = '23,45,89,12,44,23,72,21 '
$aA = stringsplit($string. ',' , 2)
fo $i in $aA
 msgbox()
next
发表于 2011-5-26 11:20:39 | 显示全部楼层
回复  sex123
那要看具体问题了,_arraycreate目前只支持创建20个元素的数组
netegg 发表于 2011-5-26 06:23

什么时候新增了个_ArrayCraete函数了?
请蛋蛋兄给个链接
发表于 2011-5-26 11:56:12 | 显示全部楼层
; #NO_DOC_FUNCTION# =============================================================================================================
; Name...........: _ArrayCreate
; Description ...: Create a small array and quickly assign values.
; Syntax.........: _ArrayCreate ($v_0 [,$v_1 [,... [, $v_20 ]]])
; Parameters ....: $v_0  - The first element of the array
;                  $v_1  - [optional] The second element of the array
;                  ...
;                  $v_20 - [optional] The twenty-first element of the array
; Return values .: Success - The array with values
; Author ........: Dale (Klaatu) Thompson, Jos van der Zande <jdeb at autoitscript dot com> - rewritten to avoid Eval() errors in Obsufcator
; Modified.......: Ultima
; Remarks .......: Arrays of up to 21 elements in size can be created with this function.
; Related .......:
; Link ..........:
; Example .......: Yes
; ===============================================================================================================================
帮助里没列出来吧
发表于 2011-5-26 12:22:07 | 显示全部楼层
本帖最后由 netegg 于 2011-5-26 12:25 编辑

一直就有,不过帮助总是不写,可能就是因为只支持创建20个元素的缘故
发表于 2011-5-26 14:28:19 | 显示全部楼层
所谓的不知道是什么数,是指这个数是随机的?还是需要用户指定的?还是需要从哪里获取的?随机用Random函数产生吧,用户指定就建立个输入对话框让用户手动输入,要获取那就要看实际情况了,反正最后就是把这几个数给放进数组里呗
 楼主| 发表于 2011-5-26 15:44:06 | 显示全部楼层
所谓的不知道是什么数,是指这个数是随机的?还是需要用户指定的?还是需要从哪里获取的?随机用Random函数 ...
飘云 发表于 2011-5-26 14:28



    不是随机产生的,是特定的一组数,只是每次由客户决定是些什么数。一般在三十几个左右。不知道这个函数能不能用于字母,因为不只是由数字组成,也有可能里面参杂字母。
发表于 2011-5-26 16:49:19 | 显示全部楼层
本帖最后由 love5173 于 2011-5-26 16:55 编辑

回复 5# netegg

数组本身就支持直接录入,何必先放到字符串再转换呢
#include <Array.au3>

Dim $aArray[5] = [1, 2, 3, 4, 5]

For $i = 1 To UBound($aArray)
    $aArrayCombo = _ArrayCombinations($aArray, $i, ",")
    _ArrayDisplay($aArrayCombo, "iSet = " & $i)
Next
发表于 2011-5-27 03:12:25 | 显示全部楼层
本帖最后由 netegg 于 2011-5-27 07:16 编辑

关键是他输入的数量不确定,没法直接定义数组,除非定义不确定数组,然后在每次循环返回或在开始循环的时候索引加一,虽然也是一种方法.
发表于 2011-5-27 07:19:36 | 显示全部楼层
本帖最后由 netegg 于 2011-5-27 07:33 编辑

回复 11# love5173

你这样虽然是个方法,但如果第六个元素是1呢,还要加判断吧,是不是太累了,另外如果开始给定数组是空数组呢,怎么定义,当然,
这不属于这个话题了,不过多考虑可能的情况以后如果碰到的话不至于想不明白

另外,建议你看看combination的用法,这个函数不是用来添加元素的

还有,楼主的意图到底是什么,那30个数到底是怎么产生的,最好把过程和所需结果大致写出来
发表于 2011-5-27 08:18:33 | 显示全部楼层
很久没来了,来了就发个贴吧
楼主是不是这个意思?
输入框中可以用数字或字母加数字组合,用逗号隔开输入即可
$str = InputBox ("","" ,"23, 45, 89, 12, 44, 23, 72, 21")
$aStr = StringSplit($str,",")

For $i=1 To $aStr[0]
        MsgBox (0,$i,$aStr[$i])
Next
发表于 2011-5-27 18:32:34 | 显示全部楼层
回复 13# netegg
我是个乖孩子,我给你发的这个代码是帮助文件里的,你说他不好我也无话可说,我当时只是给你举例而已呵呵
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 21:35 , Processed in 0.106057 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表