TC官方合作论坛

 找回密码
 立即注册
查看: 1164|回复: 5

[已解决] 对于未知的数组元素个数怎么定义

[复制链接]
发表于 2014-2-20 18:09:32 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于未知的数组元素个数怎么定义


如 :
boolr=数组空间.大小(s1返回串X,len1)
变量 cbsz=数组[len1]
回复

使用道具 举报

发表于 2014-2-20 18:55:19 | 显示全部楼层
数组是一系列数据的集合,对数组数据的访问是通过数组的下标。

数组分一维数组和多维数组,TC最多支持8维数组。

数组的作用是保存大量的数据,实现数据的快速访问。比如扫描拍卖行物品:把同类物品名和最低价存储到一个二维数组、游戏中跑路需要多组坐标,把坐标数据保存到数组等等。 现在来熟悉TC里的数组基础知识。

(关键字中英文对应关系, 数组 - array )

数组的定义

定义数组的方法为:在数组关键字后加方括号括来说明。下面是一个定义数组的例子:

变量 物品=数组[10]

这条语句定义了一个具有10个元素的名为物品的数组。方括号中的维数必须是一个正数值,不能为负数。这个数组只有一对中括号,所以它是一维数组。

下面这样声明是正确的:

复制代码

变量 物品=数组[53]
变量 物品=数组[5*3+5]
变量 物品=数组[5.3]
但是下面这样是错误的定义:

复制代码

变量 物品=数组[5.2-10]
数组的大小如果为浮点数,那么TC在处理的时候,会进行四舍五入处理为整型值。如下:

变量 物品=数组[5.2] // 数组的大小为5

变量 物品=数组[5.6] // 数组的大小为6



数组的访问

数组的访问是通过数组下标来访问的,而且下标的取值范围为0到N-1。如下:

复制代码

变量 物品=数组[10]
表明该物品数组是一维数组,里面有10个数,它们分别为物品[0], 物品[1],……物品[9];千万注意,数组的第一个元素下标从0开始。一些刚学编程的人员经常在这儿犯一些错误。

物品[3]=25

复制代码

物品[3]=25
上面的例子是把25赋值给物品数组的第四个元素,在赋值的时候,可以使用变量作为数组下标。



访问数组中的所有元素时,使用循环的方法访问,一般是一维数组使用一个循环,二维数组使用二层嵌套循环,三维数组使用三层嵌套循环,依此类推,八维数组使用八层嵌套循环访问。

如下是数组的定义与初始化操作:

复制代码

变量 offset = 数组[10] //定义一个大小为10的数组
遍历(下标 = 0; 下标 < 10 ; 下标 ++)
offset[下标]=辅助.随机数(10,30)//产生一个10到30的随机数存入数组各元素里
遍历结束


一维数组举例:

随机5个整数存入数组中,然后把它们从小到大排列并放在同一数组中。(思路:先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。

复制代码

功能 排序()
  变量 值 = array[5]
  变量 i=0,j=0,min=0,stmp=0
  遍历(5)
    值 =辅助.随机数(10,30)// 随机生成5个数
    i =i + 1
  遍历结束
  字符型 输入内容
  输入内容 = 字符串.格式化("随机数为:%d,%d,%d,%d,%d",值[0],值[1],值[2],值[3],值[4])
  辅助.消息框(输入内容)
//// 开始排序
  i=0
  循环(i<4)
    min=值
    j=i+1
    循环(j<5)
      如果(min>值[j])// 里面的4行语句很重要
        min=值[j]
        stmp=值
        值=值[j]
        值[j]=stmp
      如果结束
      j = j + 1
    循环结束
    i = i + 1
  循环结束
  输入内容 = 字符串.格式化("排列后的数据为:%d,%d,%d,%d,%d",值[0],值[1],值[2],值[3],值[4])
  辅助.消息框(输入内容)
功能结束
分析:先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换应该这样(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想这是为什么?必须要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。


转至F1~
回复 支持 反对

使用道具 举报

发表于 2014-2-20 23:23:55 | 显示全部楼层
不知道就先定义成空数组。
  1. var a=array[]
复制代码

以后需要放入元素时再扩充。看下帮助文档里的 arraysp.alloc(.....)吧
回复 支持 反对

使用道具 举报

发表于 2014-2-21 00:05:00 | 显示全部楼层
本帖最后由 dongyijun1979 于 2014-2-21 00:06 编辑



以后需要放入数组元素的时候,用 arraysp.alloc   或者 arraysp.add都可以扩充数组长度。

给你举个例子吧,(也不知道代码粘上去乱不乱)

  1. <P> </P>
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2014-2-21 00:07:10 | 显示全部楼层
function start_click()
    var  a=array[],b=array[]
    var i
   
    //用arraysp.alloc扩充
    a=arraysp.alloc(a,true,3)
    for(i=0;i<3;i++)
        a[i]=i
    endfor
   
   
    //用arraysp.add扩充
    for(i=0;i<5;i++)
        arraysp.add(b,i,1)
    endfor
   
    arraysp.size(a,i)
    traceprint("len_a=" & i)
    arraysp.size(b,i)
    traceprint("len_b=" & i)
   
endfunction
回复 支持 反对

使用道具 举报

发表于 2014-2-23 08:48:08 | 显示全部楼层
请采纳如果我的回答帮助到了你 !

用变量啊,用变量来接收未知数组大小的值,声明跟定义是两回事儿哈

温馨提示6 : 术语问题可以去问百度 , 或者你可以叫她度娘
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-24 09:54 , Processed in 0.037627 second(s), 24 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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