| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1042 人关注过本帖, 1 人收藏
标题:从网上下载的源代码,想增加功能却发现无从下手,请高手指点!
只看楼主 加入收藏
gzbanana
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-28
收藏(1)
得分:0 
,不好意思。最后一条的“ C与D比较,相似度80%,达不到输入值,不动作。”这里写错了,C与D比较应该是60%

改一下

当百分比:(输入)60%      (这里指数据的相似度 >= 60% 时,保留日期最旧的,其他相似的都删掉)

    A与B比较,相似度85%,达到输入值,删除B,保留A。
    A与C比较,相似度57%,达不到输入值,不动作。
    A与D比较,相似度57%,达不到输入值,不动作。

    由于删除了B,不用与C、D比较

    C与D比较,相似度60%,达到输入值,删除D,保留C。

删除数据后的数据库表
序号 |         字段Z                |      日期      |
-----|------------------------------|----------------|---------
  A  | 1 , 2 , 3 , 4 , 5 , 6 , 7    |   2011-05-02   |
-----|------------------------------|----------------|---------
  C  | 11 , 2 , 3 , 4 , 5           |   2011-06-13   |
-----|------------------------------|----------------|---------

2011-07-03 20:16
W11400661
Rank: 8Rank: 8
来 自:达拉达斯
等 级:蝙蝠侠
威 望:2
帖 子:163
专家分:834
注 册:2008-10-12
收藏
得分:20 
Private Function Compare(Number1 As String, Number2 As String, Base As Single) As Boolean
Dim i As Integer
Dim a() As String
Dim b() As String
Dim count As Integer
Dim lenStr1 As Integer
Dim lenStr2 As Integer
lenStr1 = Len(Number1)
lenStr2 = Len(Number2)
ReDim  a(lenStr1 - 1) As String
ReDim  b(lenStr2 - 1) As String
For i = 0 To lenStr1 - 1
    a(i) = Mid(Number1, i + 1, 1)
Next
For i = 0 To lenStr2 - 1
    b(i) = Mid(Number2, i + 1, 1)
Next
If lenStr1 = lenStr2 Then
   For i = 0 To UBound(a)
       If a(i) = b(i) Then count = count + 1
   Next
Compare = IIf(count / lenStr1 > Base, True, False)
ElseIf lenStr1 > lenStr2 Then
   For i = 0 To UBound(b)
       If a(i) = b(i) Then count = count + 1
   Next
Compare = IIf(count / lenStr1 > Base, True, False)
ElseIf lenStr1 < lenStr2 Then
    For i = 0 To UBound(a)
        If a(i) = b(i) Then count = count + 1
    Next
Compare = IIf(count / lenStr2 >= Base, True, False)
End If
End Function
compare=true 相似度大于base
compare=false 相似度小于base

你试试吧
2011-07-03 21:58
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

无知
2011-07-03 23:52
gzbanana
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-28
收藏
得分:0 
谢谢W11400661。您这段代码的IIF函数我从没用过呢,提醒了我另一个构思。

,不知道版主给我图片是什么意思?是指我发错地方?还是我该结贴了?

这段代码分为a、b两个数组,但是都是从i的第一位算起的,而我的要求是某一段中的相同。如果是C与D的比较这段代码就不识别了。

例如:

序号 |         字段Z                           |      日期      |
-----|-----------------------------------------|----------------|---------
  A  | 我是广东省广州市的人,我住在天河区。    |   2011-05-02   |
-----|-----------------------------------------|----------------|---------
  B  | 我们是广东省广州市的人,我在天河区。    |   2011-06-02   |
-----|-----------------------------------------|----------------|---------
  C  | 他是广东省广州市人,他在天河区住。      |   2011-06-13   |
-----|-----------------------------------------|----------------|---------
  D  | 他们是广东省广州市的人,他在天河区。    |   2011-07-01   |
-----|-----------------------------------------|----------------|---------
2011-07-04 10:57
W11400661
Rank: 8Rank: 8
来 自:达拉达斯
等 级:蝙蝠侠
威 望:2
帖 子:163
专家分:834
注 册:2008-10-12
收藏
得分:0 
你今天的例子和你前几次的例子实在差别太大,前边说你要按顺序比较,今天说不按顺序了,某一段中的相同,那到底是那一段,啥都不固定怎么解
如X+Y=10000,求X=?Y=?你能解答吗
取正整数答案有多少?取实数呢,答案又是多少?

你现在的意思是以A句为条件,在B句中找相同的字符的话,这个也好办
如下:
 A  | 我在天河区,我是广东省广州市的人。    |   2011-05-02   |
----|---------------------------------------|----------------|---------
  B | 我是广东省广州市的人,我在天河区。    |   2011-06-02   |
这两句字符一样,只是顺序不同,那他俩是相同还是不同。
再如下:
 A  | 我在广州市的天河区,我是广东省人。    |   2011-05-02   |
----|---------------------------------------|----------------|---------
  B | 我是广东省广州市的人,我在天河区。    |   2011-06-02   |
这两句字符也一样,只是顺序更不同,相同吗?


2011-07-04 19:42
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
所以,提问时描述清楚问题是很重要的,也能最快地得到帮助。也就是说,要让别人能尽快的重现你的问题,这是最重要的。

===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-07-04 19:55
gzbanana
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-28
收藏
得分:0 
对不起。W11400661,版主。  

看来我表达的不清楚。

如下:
A  | 我在天河区,我是广东省广州市的人。    |   2011-05-02   |
----|---------------------------------------|----------------|---------
  B | 我是广东省广州市的人,我在天河区。    |   2011-06-02   |
这两句字符一样,只是顺序不同,那他俩是相同还是不同。     因为顺序不同,所以A与B比较后,“我是广东省广州市的人”是相同的,相似度58%,如果输入50%,就属于达到标准,删除B
再如下:
 A  | 我在广州市的天河区,我是广东省人。    |   2011-05-02   |
----|---------------------------------------|----------------|---------
  B | 我是广东省广州市的人,我在天河区。    |   2011-06-02   |
这两句字符也一样,只是顺序更不同,相同吗?               A与B比较后,不管是“我”“广”“。”是相同的,还是“广州市的”相同,相似度17%左右,如果输入50%,达不到标准,不操作。

2011-07-04 22:41
gzbanana
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-28
收藏
得分:0 
又沉了,我顶。等着您来。W11400661
2011-07-05 16:36
W11400661
Rank: 8Rank: 8
来 自:达拉达斯
等 级:蝙蝠侠
威 望:2
帖 子:163
专家分:834
注 册:2008-10-12
收藏
得分:0 
还是沉了吧,就好比我说的X+Y=10000,求x=?,y=?
也不是没答案,只是答案太多
就决办法就是先确定一个,在求另一个

你现在的想法程序是实现不了的,换个角度考虑吧
2011-07-05 23:33
gzbanana
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-6-28
收藏
得分:0 
哦,好的,谢谢W11400661。感谢您对我的帮助,虽然还没解决问题,不过我也从中学到了知识。

非常感谢。
2011-07-06 09:17
快速回复:从网上下载的源代码,想增加功能却发现无从下手,请高手指点!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026616 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved