CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

请问VB如何编写代码去掉一组数里几个相同的数而只留一个?

楼主liuyh7788()2006-06-03 22:32:13 在 VB / 基础类 提问

Dim   ShaHao(1   To   15)   As   Integer  
   
  ShaHao(1)   =   tF   -   tE  
  ShaHao(2)   =   tF   -   tD  
  ShaHao(3)   =   tF   -   tC  
  ShaHao(4)   =   tF   -   tB  
  ShaHao(5)   =   tF   -   tA  
  ShaHao(6)   =   tE   -   tD  
  ShaHao(7)   =   tE   -   tC  
  ShaHao(8)   =   tE   -   tB  
  ShaHao(9)   =   tE   -   tA  
  ShaHao(10)   =   tD   -   tC  
  ShaHao(11)   =   tD   -   tB  
  ShaHao(12)   =   tD   -   tA  
  ShaHao(13)   =   tC   -   tB  
  ShaHao(14)   =   tC   -   tA  
  ShaHao(15)   =   tB   -   tA  
   
  上面的这组数里,比如有6个数是相等的;  
  如何去掉5个只留一个?  
  代码是如何编写的?  
  感谢啊!  
  问题点数:100、回复次数:6Top

1 楼EexeNet(Eexe.Net)回复于 2006-06-03 22:34:00 得分 20

关注,我现在在想。。。。。。Top

2 楼of123()回复于 2006-06-03 23:07:40 得分 20

很容易(例如利用   ListBox):  
  Private   Declare   Function   SendMessagebyString   Lib   _  
  "user32"   Alias   "SendMessageA"   (ByVal   hWND   As   Long,   _  
  ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   _  
  ByVal   lParam   As   String)   As   Long  
   
  Private   Const   LB_FINDSTRINGEXACT   =   &H1A2         '在   ListBox   中精确查找  
   
  Private   Sub   Command1_Click()  
          Dim   i   As   Integer,   n   As   Integer  
          For   i   =   0   To   Ubound(ShaHao)  
                  n   =   SendMessagebyString(List1.hWnd,   LB_FINDSTRINGEXACT,   -1,   ShaHao(i))  
                  If   n   =   -1   Then   List1.AddItem   ShaHao(i)  
          Next   i  
  End   Sub  
   
  最后在   List1   的列表项中得到的就是唯一的数据。Top

3 楼lzheng2001(1加1)回复于 2006-06-03 23:07:54 得分 20

相信没有什么好的算法,只能用循环.   而且还要另建一个数组.  
   
  如果有数据库的话,可以利用数据库,把数据的值插入到数据库中的临时表中(临时表是内存操作比较快),   然后用sql   语句来返回结果.   对于很大量的数据,这种方法比较有效.Top

4 楼northwolves(狼行天下)回复于 2006-06-03 23:10:05 得分 20

去掉一组数里几个相同的数而只留一个  
  --------------------------------------  
  可以利用集合关键字的唯一性,如:  
   
  Private   Sub   Command1_Click()  
  Dim   i   As   Integer,   x   As   New   Collection  
  On   Error   Resume   Next  
  For   i   =   1   To   15  
  x.Add   shahao(i),   "x"   &   shhao(i)  
  Next  
   
  For   i   =   1   To   x.Count  
  Debug.Print   x(i)  
  Next  
  End   Sub  
  Top

5 楼lsftest()回复于 2006-06-03 23:19:16 得分 20

数组不大的话也可以试试join/replace.....Top

6 楼liuyh7788()回复于 2006-06-04 00:27:03 得分 0

谢谢!  
  自己解决了;代码如下;  
  --------------------------------------------------------------------------------  
  Dim   tH   As   String  
  Dim   nHa   As   String,   nHb   As   String,   nHc   As   String,   nHd   As   String  
  Dim   qHa   As   String,   qHb   As   String,   qHc   As   String  
  Dim   QiHao   As   String  
  Dim   NianFen   As   Long  
  Dim   Nian   As   Long  
  Dim   tA   As   Integer,   tB   As   Integer,   tC   As   Integer,   tD   As   Integer,   tE   As   Integer,   tF   As   Integer,   tBh   As   Integer  
  Dim   ShaHao(1   To   15)   As   Integer  
  Dim   sH   As   Integer  
  Dim   hS   As   Integer  
  Dim   lFw(1   To   15)   As   Integer  
  Dim   Lf(1   To   15)   As   Integer  
  Dim   LanFw   As   String  
  Dim   Ti   As   Integer  
  Dim   X   As   Long  
  Dim   Q(1   To   15)   As   Integer  
  Dim   i   As   Integer  
  Dim   j   As   Integer  
  Dim   Y   As   Integer  
  Dim   z   As   Integer  
   
  Ti   =   0  
  X   =   0  
  For   i   =   1   To   15  
        Q(i)   =   0  
  Next  
   
  tA   =   Text1  
  tB   =   Text2  
  tC   =   Text3  
  tD   =   Text4  
  tE   =   Text5  
  tF   =   Text6  
   
  ShaHao(1)   =   tF   -   tE  
  ShaHao(2)   =   tF   -   tD  
  ShaHao(3)   =   tF   -   tC  
  ShaHao(4)   =   tF   -   tB  
  ShaHao(5)   =   tF   -   tA  
  ShaHao(6)   =   tE   -   tD  
  ShaHao(7)   =   tE   -   tC  
  ShaHao(8)   =   tE   -   tB  
  ShaHao(9)   =   tE   -   tA  
  ShaHao(10)   =   tD   -   tC  
  ShaHao(11)   =   tD   -   tB  
  ShaHao(12)   =   tD   -   tA  
  ShaHao(13)   =   tC   -   tB  
  ShaHao(14)   =   tC   -   tA  
  ShaHao(15)   =   tB   -   tA  
   
  For   sH   =   1   To   15   Step   1  
      If   ShaHao(sH)   <=   16   Then  
            Ti   =   Ti   +   1  
            lFw(Ti)   =   ShaHao(sH)  
      End   If  
  Next  
   
        For   i   =   1   To   Ti   -   1  
            For   j   =   i   +   1   To   Ti  
                If   lFw(i)   =   lFw(j)   Then  
                      lFw(i)   =   0  
                End   If  
            Next   j  
        Next   i  
   
  For   i   =   1   To   Ti  
        If   lFw(i)   >   0   Then  
              X   =   X   +   1  
              Q(X)   =   lFw(i)  
        End   If  
  Next  
   
        For   i   =   X   To   1   Step   -1  
                For   j   =   1   To   X   -   1  
                          If   Q(j)   >   Q(j   +   1)   Then  
                                  Y   =   Q(j   +   1)  
                                  Q(j   +   1)   =   Q(j)  
                                  Q(j)   =   Y  
                          End   If  
                  Next   j  
          Next   i  
   
  For   i   =   1   To   X  
      If   Q(i)   <   10   Then  
        LanFw   =   LanFw   &   "0"   &   Q(i)   &   "   "  
      Else  
        LanFw   =   LanFw   &   Q(i)   &   "   "  
      End   If  
  Next  
   
  Label9.Caption   =   LanFw  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:liuyh7788
  • EexeNet
  • of123
  • lzheng2001
  • northwolves
  • lsftest

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo