[请教高手] 两组数据比较,如何按特定的方式出取不同数据?

waiber 2006-08-08 04:47:43
arr1 = "0, 80, 90, 85, 88, 90, 110, 90, 80, 90, 85, 90, 85, 70"
arr2 = "0, 80, 75, 70, 70, 80, 110, 80, 70, 80, 85, 70, 80, 70"

取出两组不相等的数据
结果应为:
1、
90, 85, 88, 90
75, 70, 70, 80

2、
90, 80, 90
80, 70, 80

3、
90, 85
70, 80

想得到的结果如下:
第一组数据:80, 90, 85, 88, 90, 80, 70, 70,75
第二组数据:110, 90, 80, 90, 85, 80, 70,80
第三组数据:85, 90, 85, 70,80,70

如图所示:
http://p.blog.csdn.net/images/p_blog_csdn_net/waiber/1.jpg

各位高手帮看看,先谢谢各位。
...全文
347 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
waiber 2006-08-10
  • 打赏
  • 举报
回复
非常感谢楼上各位,结帐!
province_ 2006-08-09
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim arr1 As String
Dim arr2 As String
Dim dat1() As String, dat2() As String
Dim i As Long, j As Long
Dim tmp1 As String, tmp2 As String

arr1 = "0, 80, 90, 85, 88, 90, 110, 90, 80, 90, 85, 90, 85, 70"
arr2 = "0, 80, 75, 70, 70, 80, 110, 80, 70, 80, 85, 70, 80, 70"

dat1 = Split(arr1, ", ")
dat2 = Split(arr2, ", ")

For i = 0 To UBound(dat1)

If dat1(i) <> dat2(i) Then

j = i
While dat1(j) <> dat2(j) '这里要注意J可能越界,你的数据比较好,所以我没做处理。
tmp1 = tmp1 & dat1(j)
tmp2 = tmp2 & dat2(j)

j = j + 1
Wend
i=j
Text1 = Text1 & tmp1 & vbCrLf
Text1 = Text1 & tmp2 & vbCrLf
tmp1 = ""
tmp2 = ""
End If

Next

End Sub
可以得到你说的
1、
90, 85, 88, 90
75, 70, 70, 80

2、
90, 80, 90
80, 70, 80

3、
90, 85
70, 80
至于后面你的三组数据我可看不懂什么意思。
of123 2006-08-09
  • 打赏
  • 举报
回复
唉,现在的科技工作者们的表达能力越来越令人摸不着头脑了,丈二和尚,高!

1 你的结果分了三部分,分割的规则是什么?就是说,凭什么分的?
2
想得到的结果如下:
第一组数据:80, 90, 85, 88, 90, 80, 70, 70,75
第二组数据:110, 90, 80, 90, 85, 80, 70,80
第三组数据:85, 90, 85, 70,80,70
又是怎么回事?
3
你最终是想输出数据就算完,还是要求结果是画出圈圈?如果是后者,你的界面是什么?PictureBox 还是 Form ?
waiber 2006-08-09
  • 打赏
  • 举报
回复
谢谢 province_(雍昊) 的答复,可能误解我的题意了。

希望大家能帮看看。
of123 2006-08-09
  • 打赏
  • 举报
回复
后三组数据,以第一组为例说明:
1、
90, 85, 88, 90
75, 70, 70, 80

想得到的数据为:
第一排(90, 85, 88, 90):第一排前一个 + 第一排 + 第一排后一个的数据,如:
80, 90, 85, 88, 90, 80

第二排(75, 70, 70, 80),将其反向读取,得到:
80, 70, 70,75

得到第一组数据为:
80, 90, 85, 88, 90, 80, 80, 70, 70,75

str1 = "90, 85, 88, 90"
str2 = "75, 70, 70, 80"

dim arr1() as string
dim arr2() as string
dim str3 as string

arr1 = split(str1, ",")
arr2 = split(str2, ",")
str3 = arr1(0) & str1 & arr1(Ubound(arr1))
for i = ubound(arr2) to 0 step -1
str3 = str3 & "," & arr2(i)
next i
debug.print str3
of123 2006-08-09
  • 打赏
  • 举报
回复
arr1 = "0, 80, 90, 85, 88, 90, 110, 90, 80, 90, 85, 90, 85, 70"
arr2 = "0, 80, 75, 70, 70, 80, 110, 80, 70, 80, 85, 70, 80, 70"

dim a1() as string
dim a2() as string
dim str1 as string, str2 as string
dim i as integer

a1 = split(arr1, ",")
a2 = split(arr2, ",")


for i = 0 to ubound(a1) '假定你的字符串项数相等,不会出现下标溢出
if a1(i) <> a2(i) Then
str1 = str1 & a1(i) & ","
str2 = str2 & a2(i) & ","
else
if str1 > "" then
str1 = left(str1, len(str1) - 1)
str2 = left(str2, len(str2) - 1)
debug.print str1
debug.print str2
str1 = ""
str2 = ""
end if
end if
next i
一笑拔剑 2006-08-09
  • 打赏
  • 举报
回复
思维混乱
反正也有高手看了
我也不看了
waiber 2006-08-09
  • 打赏
  • 举报
回复
再次感谢province_(雍昊) 、of123()

province_(雍昊) :至于后面你的三组数据我可看不懂什么意思。

后三组数据,以第一组为例说明:
1、
90, 85, 88, 90
75, 70, 70, 80

想得到的数据为:
第一排(90, 85, 88, 90):第一排前一个 + 第一排 + 第一排后一个的数据,如:
80, 90, 85, 88, 90, 80

第二排(75, 70, 70, 80),将其反向读取,得到:
80, 70, 70,75

得到第一组数据为:
80, 90, 85, 88, 90, 80, 80, 70, 70,75

不知说明白没有?




'**



of123() :

1、分割的规则是两组不相等的数据时;
2、请见上述;
3、要取出用圈套住的数据。


可见我的表达能力不行,再次谢谢楼上两位。
province_ 2006-08-08
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim arr1 As String
Dim arr2 As String
Dim dat1() As String, dat2() As String
Dim i As Long, j As Long
Dim tmp1 As String, tmp2 As String

arr1 = "0, 80, 90, 85, 88, 90, 110, 90, 80, 90, 85, 90, 85, 70"
arr2 = "0, 80, 75, 70, 70, 80, 110, 80, 70, 80, 85, 70, 80, 70"

dat1 = Split(arr1, ", ")
dat2 = Split(arr2, ", ")

For i = 0 To UBound(dat1)

If dat1(i) <> dat2(i) Then

j = i
While dat1(j) <> dat2(j) '这里要注意J可能越界,你的数据比较好,所以我没做处理。
tmp1 = tmp1 & dat1(j)
tmp2 = tmp2 & dat2(j)

j = j + 1
Wend

Text1 = Text1 & tmp1 & vbCrLf
Text1 = Text1 & tmp2 & vbCrLf
tmp1 = ""
tmp2 = ""
End If

Next

End Sub

90858890
75707080
858890
707080
8890
7080
90
80
908090
807080
8090
7080
90
80
9085
7080
85
80
答案好象不止你说的几种。
waiber 2006-08-08
  • 打赏
  • 举报
回复
要取出的数据用红圈套中

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧