首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • VB 数组中的所有数据中,我怎样取出相同的记录 [已结贴,结贴人:zhangyi_9]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangyi_9
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-22 19:45:28 楼主
    我现在有个数组A,A中的记录值为:10,20,30,35,40,45,50,55,60,65,70,11,20,25,30,35,40,45,50,55,60,70,77,12,35,40,45,50,75
    这个数组中,我想把所有的就是相同的记录取出来,得到的结果应该是:
    35,40,45,50
    谁能帮我看看,怎样做才能实现我的要求?最好有代码。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-08-22 20:09:121楼 得分:0
    VB code
    Option Explicit Private Sub Command1_Click() Dim A As Variant Dim i, j As Long A = Array(10, 20, 30, 35, 40, 45, 50, 55, 60, 65, 70, 11, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 77, 12, 35, 40, 45, 50, 75) Dim B As Variant Dim C() As Boolean ReDim C(UBound(A)) As Boolean B = A For i = 0 To UBound(B) - 1 For j = i + 1 To UBound(B) If B(i) = B(j) And B(i) <> "" Then C(i) = True B(j) = "" ' Stop End If Next Next For i = 0 To UBound(C) If C(i) Then MsgBox A(i) End If Next End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangyi_9
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 20:15:112楼 得分:0
    非常感谢楼上的回答,可是计算出来的结果不是我需要的结果啊,我要得到的最后结果是:35,40,45,50
    你那种算出来的结果我也算出来了,但是不符合我的要求啊。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yachong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 20:57:573楼 得分:0
    楼主想要的35,40,45,50 都出现了3次
    表述误导别人了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yachong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 21:01:184楼 得分:20
    fvflove 的稍微修改一下
    VB code
    Private Sub Command1_Click() Dim A As Variant Dim i, j As Long A = Array(10, 20, 30, 35, 40, 45, 50, 55, 60, 65, 70, 11, 20, 25, 30, 35, 40, 45, 50, 55, 60, 70, 77, 12, 35, 40, 45, 50, 75) Dim B As Variant Dim C() As Long ReDim C(UBound(A)) As Long B = A For i = 0 To UBound(B) - 1 For j = i + 1 To UBound(B) If B(i) = B(j) And B(i) <> "" Then C(i) = C(i) + 1 B(j) = "" ' Stop End If Next Next For i = 0 To UBound(C) If C(i) >= 2 Then MsgBox A(i) End If Next End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fvflove
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

    发表于:2008-08-22 21:13:155楼 得分:0
    可能我们都错了,
    你发现没有.35,40,45,50  虽然是出现了三次,但是你发现没有,这三次出现的时候,这几个数字都是连续的.

    可能楼主要的是,连续内个并有重复出现的数,并且是连续最多的一组数.

    如果这样,问题就难了一点了,分数好象不够.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yachong
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 21:50:116楼 得分:0
    哦,确实是
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lsftest
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-22 22:22:467楼 得分:0
    把数组join成一字符串,然后逐一元素在这个字符串里做replace (元素,""),然后计算replace后字符串长度减少多少得出元素出现次数,最后输出出现次数最多的元素.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SYSSZ
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-23 08:53:148楼 得分:0
    这段代码可解决问题:
    Private Sub Form_Load()
    Dim B, C, D, E
    Dim X
    B = Join(Array(10, 20, 30), ";")
    C = Join(Array(35, 40, 45, 50), ";")
    D = Join(Array(55, 60, 65, 70, 11, 20, 25, 30), ";")
    E = Join(Array(55, 60, 70, 77, 12), ";")
    A = Array(B, C, D, C, E, C, 75)
    For j = LBound(A) To UBound(A)
    X = Filter(A, A(j), True, vbTextCompare)
    If UBound(X) > 0 Then
    y = X(0)
    End If
    Next
    MsgBox y'y为35,40,45,50
    End Sub
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangyi_9
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 14:44:079楼 得分:0
    呵呵,谢谢楼上给我这么多回答,我的数字并不是连续的,我的数组里的数字,是由几组数据连接成的一个数组,就是我在界面上做了一个listview1和listview2,让listview1里面为checkbox,这样我就可以选择listview1里的数字,
    比如listview1里有:1、2、3、4、5、6、7,7个选择项,
    1中包括的数字有:10,20,30,35,40,45,50,55,60,65,70
    2中包括的数字有:11,20,25,30,35,40,45,50,55,60,70,77
    3中包括的数字有:12,35,40,42.5,45,47.5,50,75
    4中包括的数字有:13,30,35,37,40,42,45,50,55,60
    我在listview1里选择的时候,如果我只选择了1,那listview2里就显示出:10,20,30,35,40,45,50,55,60,65,70
    如果我选择了1和2,那在listview2里就显示出1和2中相同的数字:20,30,35,40,45,50,55,60,70
    如果我选择了1、2、3,那在listview2里就显示出1、2、3中相同的数字:35,40,45,50
    以此类推
    大家看看谁能帮帮我,这段代码该怎样写?

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangyi_9
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 15:06:0210楼 得分:0
    谢谢各位了,问题已经解决了,yachong谢谢你的答案,我采用了你的方法,结果正是我要的,谢谢啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • uself
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-24 15:12:1411楼 得分:0
    1和2 相同产生一个连接A,2和3相同产生一个连接B,
    同样方法,A和B相同产生一个连接;
    输出连接.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved