vb数组问题 找包含相同数字的数组 20
三个text,第一个里面有若干组三位数。第二个text2可以输入一个单数,也可以是多个单数,还可以是多个两位数,多个中间有空格。提交按钮后,text3能把text1里面包...
三个text ,第一个里面有若干组三位数。第二个text2可以输入一个单数,也可以是多个单数,还可以是多个两位数,多个中间有空格。提交按钮后,text3能把text1里面包含单数或者多个两位数的数组找出来。
问题详细描述:
比如第一个文本里是189 158 418 801 379 465 188 751 940,712 671,701,167第二个文本输入一个单数1,那么把所有包含1的数组都找出来。结果出现189 158 418 801 188 751 712
再比如第一个文本里是189 158 418 801 379 465 188 751 940 712,671 701,167第二个文本输入18 71和89那么把第一个文本里,百位是1十位是8,十位是1,个位是8,个位是1百位是8,百位是7十位是1,十位是7个位是1,个位是7,百位是1,百位是8,十位是9,十位是8个位是9,个位是8,百位是9的所有数组都找出来。结果是189 418 801 188 712 671 167出现重复的只保留一个(重要说明,上一个VB程序的算法是百位减十位,十位减个位,个位减百位。)这样找相同的的代码怎么写?
问题二的结果刚好相反:找不相同的。
比如第一个文本里是189 158 418 801 379 465 188 751 940 712,671 701,167第二个文本输入18和71那么把第一个文本里包含百位是1十位是8,十位是1,个位是8,个位是1百位是8,百位是7十位是1,十位是7个位是1,个位是7,百位是1的所有数组都找出来。结果是189 418 801 188 712 671 167
158 379 465 751 940 701(重要说明,上一个VB程序的算法是百位减十位,十位减个位,个位减百位。)这样找不同的的代码怎么写?
相同的和不同的分开写?谢谢 展开
问题详细描述:
比如第一个文本里是189 158 418 801 379 465 188 751 940,712 671,701,167第二个文本输入一个单数1,那么把所有包含1的数组都找出来。结果出现189 158 418 801 188 751 712
再比如第一个文本里是189 158 418 801 379 465 188 751 940 712,671 701,167第二个文本输入18 71和89那么把第一个文本里,百位是1十位是8,十位是1,个位是8,个位是1百位是8,百位是7十位是1,十位是7个位是1,个位是7,百位是1,百位是8,十位是9,十位是8个位是9,个位是8,百位是9的所有数组都找出来。结果是189 418 801 188 712 671 167出现重复的只保留一个(重要说明,上一个VB程序的算法是百位减十位,十位减个位,个位减百位。)这样找相同的的代码怎么写?
问题二的结果刚好相反:找不相同的。
比如第一个文本里是189 158 418 801 379 465 188 751 940 712,671 701,167第二个文本输入18和71那么把第一个文本里包含百位是1十位是8,十位是1,个位是8,个位是1百位是8,百位是7十位是1,十位是7个位是1,个位是7,百位是1的所有数组都找出来。结果是189 418 801 188 712 671 167
158 379 465 751 940 701(重要说明,上一个VB程序的算法是百位减十位,十位减个位,个位减百位。)这样找不同的的代码怎么写?
相同的和不同的分开写?谢谢 展开
2个回答
展开全部
就给个相同问题的答案,不同问题你自己动动脑筋吧!自己动脑动手,获得成果,更有意义!
说说算法的思路:
一、读取原始数据,存入数组。
1、把Text1里的内容,读入到数组a1。
2、把Text2里的内容,读入到数组a2。
二、用双重循环进行查找判断是否符合要求,符合要求的结果连接在一个字符串变量里LinStr。
三、将LinStr显示在Text3里。
参考代码如下:
Private Sub Command1_Click()
Dim a1() As String
Dim a2() As String
Dim a3() As String
Dim LinStr As String
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim a2s As Integer
Dim a2g As Integer
Dim a1b As Integer
Dim a1g As Integer
LinStr = Trim(Text1.Text)
a1 = Split(LinStr, " ") '把Text1里的内容,读入到数组a1
LinStr = Trim(Text2.Text)
a2 = Split(LinStr, " ") '把Text2里的内容,读入到数组a2
If Len(a2(0)) = 1 Then
'处理一位数字
LinStr = ""
For i = 0 To UBound(a1)
For j = 0 To UBound(a2)
'Text2的内容是否出现在Text1里
If InStr(a1(i), a2(j)) <> 0 Then
'判断是否重复出现过,如果没有重复,就连接到LinStr
If InStr(LinStr, a1(i)) = 0 Then
'连接找到的字符串,并在后面添加换行符号(vbCrLf)
LinStr = LinStr & a1(i) & vbCrLf
End If
End If
Next j
Next i
Else
'处理两位数字
LinStr = ""
For i = 0 To UBound(a1)
For j = 0 To UBound(a2)
'拆分出百位数、十位数和个位数
'请自己看以下Mod运算和\运算以及Cint()函数的功能
a1g = CInt(a1(i)) Mod 10
a1b = CInt(a1(i)) \ 100
a2g = CInt(a2(j)) Mod 10
a2s = CInt(a2(j)) \ 10
'Text2的内容是否出现在Text1里
If InStr(a1(i), a2(j)) <> 0 Or (a1g = a2s And a1b = a2g) Then
'判断是否重复出现过,如果没有重复,就连接到LinStr
If InStr(LinStr, a1(i)) = 0 Then
'连接找到的字符串,并在后面添加换行符号(vbCrLf)
LinStr = LinStr & a1(i) & vbCrLf
End If
End If
Next j
Next i
End If
'把LinStr内容显示在Text3
Text3.Text = LinStr
End Sub
说明:
我的答案,是在Text3里,每行显示一个数字,若要在Text3里显示在一行里,数字间用空格分隔,你自己动动脑子吧!我的代码里"VBCrLf"是换行用的,你要不换行而用空格分隔,该怎么办呢?自己想想办法吧???
说说算法的思路:
一、读取原始数据,存入数组。
1、把Text1里的内容,读入到数组a1。
2、把Text2里的内容,读入到数组a2。
二、用双重循环进行查找判断是否符合要求,符合要求的结果连接在一个字符串变量里LinStr。
三、将LinStr显示在Text3里。
参考代码如下:
Private Sub Command1_Click()
Dim a1() As String
Dim a2() As String
Dim a3() As String
Dim LinStr As String
Dim i As Integer
Dim j As Integer
Dim n As Integer
Dim a2s As Integer
Dim a2g As Integer
Dim a1b As Integer
Dim a1g As Integer
LinStr = Trim(Text1.Text)
a1 = Split(LinStr, " ") '把Text1里的内容,读入到数组a1
LinStr = Trim(Text2.Text)
a2 = Split(LinStr, " ") '把Text2里的内容,读入到数组a2
If Len(a2(0)) = 1 Then
'处理一位数字
LinStr = ""
For i = 0 To UBound(a1)
For j = 0 To UBound(a2)
'Text2的内容是否出现在Text1里
If InStr(a1(i), a2(j)) <> 0 Then
'判断是否重复出现过,如果没有重复,就连接到LinStr
If InStr(LinStr, a1(i)) = 0 Then
'连接找到的字符串,并在后面添加换行符号(vbCrLf)
LinStr = LinStr & a1(i) & vbCrLf
End If
End If
Next j
Next i
Else
'处理两位数字
LinStr = ""
For i = 0 To UBound(a1)
For j = 0 To UBound(a2)
'拆分出百位数、十位数和个位数
'请自己看以下Mod运算和\运算以及Cint()函数的功能
a1g = CInt(a1(i)) Mod 10
a1b = CInt(a1(i)) \ 100
a2g = CInt(a2(j)) Mod 10
a2s = CInt(a2(j)) \ 10
'Text2的内容是否出现在Text1里
If InStr(a1(i), a2(j)) <> 0 Or (a1g = a2s And a1b = a2g) Then
'判断是否重复出现过,如果没有重复,就连接到LinStr
If InStr(LinStr, a1(i)) = 0 Then
'连接找到的字符串,并在后面添加换行符号(vbCrLf)
LinStr = LinStr & a1(i) & vbCrLf
End If
End If
Next j
Next i
End If
'把LinStr内容显示在Text3
Text3.Text = LinStr
End Sub
说明:
我的答案,是在Text3里,每行显示一个数字,若要在Text3里显示在一行里,数字间用空格分隔,你自己动动脑子吧!我的代码里"VBCrLf"是换行用的,你要不换行而用空格分隔,该怎么办呢?自己想想办法吧???
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询