vb编程-删除重复数.ppt_第1页
vb编程-删除重复数.ppt_第2页
vb编程-删除重复数.ppt_第3页
vb编程-删除重复数.ppt_第4页
vb编程-删除重复数.ppt_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

删除重复数,1 8 9 8 1 5,删除,5,1 8 9 8 5,第一轮结束,删除,5,第二轮结束,1 8 9 5,重复数已删除,删除重复数,1.确定需要几轮比较 待处理数据个数-1次,Ub = UBound(A) For I = 1 To Ub - 1 Next I,1.确定需要几轮比较 待处理数据个数-1次 2.在每一轮对比中依次逐 个比较,若有重复数, 则进行删除处理,For J = I + 1 To Ub If A(I) = A(J) Then End If Next J,1.确定需要几轮比较 待处理数据个数-1次 2.在每一轮对比中依次逐 个比较,若有重复数, 则进行删除处理 3.删除处理:将数组后面 的元素依次向前移动覆 盖前面的数组元素,For K = J To Ub - 1 A(K) = A(K + 1) Next K Ub = Ub - 1 ReDim Preserve A(Ub),运行程序,结果怎样?,为什么会是这样?怎样纠正!,进行删除处理,删除重复数,Ub = UBound(A) For I = 1 To Ub - 1 For J = I + 1 To Ub If A(I) = A(J) Then For K = J To Ub - 1 A(K) = A(K + 1) Next K End If Next J Next I,Ub = Ub - 1 ReDim Preserve A(Ub),Ub = Ub - 1 ReDim Preserve A(Ub),每当进行删除操作后都要改变数组的维上界,并将数组最后一个元素删除,每当进行删除操作后都要改变数组的维上界,并将数组最后一个元素删除 但是每重循环的循环终值的值是不会改变的因此产生“数组越界”错误。此外刚移入的那个元素不再参加这一轮比较,也将会引发其他错误 纠正方法:将外面的两重For 循环改为Do循环,Ub = UBound(A) N = 1 Do While N Ub I = N + 1 Do While I = Ub If A(N) = A(I) Then For J = I To Ub - 1 A(J) = A(J + 1) Next J Ub = Ub - 1 ReDim Preserve A(Ub) Else I = I + 1 End If Loop N = N + 1 Loop,使用数组的不同属性编程,利用数组的“值”属性 用数组的“下标”属性,重新编号,解题分析 要解决的问题,如何表示学生的老编号、如何表示学生的新编号 如何处理报数 如何将一个新的编号赋给一个符合条件的学生 由于围成一圈不断在顺序报数,如何防止数组越界,重新编号, 解题分析:如何做,1.如何表示老编号和新编号,定义两个一维数组Old_No和 New_No分别表示老编号和新编号其中 Old_No的数组元素下标对应学生的老编号,数组元素的值均为1,用来标识它所代表的学生是否出圈(已获得新编号) New_No的数组元素的下标表示学生的新编号,元素的值对应该学生的老编号,Dim Old_NO(15) As Integer Dim New_NO(15) As Integer Dim I As Integer, Idx As Integer Dim Count As Integer For I = 1 To 15 Old_NO(I) = 1 Next I,重新编号, 解题分析,2.如何描述1N报数,将Old_No的数组元素依次逐个相加每当和为N时,则将该元素的值置为0(即逢N者出圈),并将它的下标值(老编号)赋给New_No数组的一个元素New_No(I),于是,这个学生就获得一个新编号I,Count = 0 Do While Count N 3 Idx = Idx + 1 Count = Count + Old_No(Idx) Loop Old_No(Idx) = 0 New_No(I) = Idx,这里的Do循环能否用For 循环替代?,此处会不会“越界”?,不能用For循环替代,因为Old_No(Idx)中的值可能是0不知道要执行多少次 Count = Count + Old_No(Idx) 语句才会使Count的值为N,If Idx M Then Idx = 1,添加这个语句后就不会发生“数组越界”,重新编号,Private Sub Command1_Click() Dim Old_NO(15) As Integer, New_NO(15) As Integer Dim I As Integer, Idx As Integer, Count As Integer Dim N As Integer For I = 1 To 15 Old_NO(I) = 1 Next I Idx = 0 N = Val(Text3) End Sub,定义变量与数组,赋初值,用For循环控制新编号,For I = 1 To 15 Next I,报数,Count = 0 Do While Count N 3 Idx = Idx + 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论