這是找相同程式示例說明
給出的資料如下:
1號Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
2號Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
3號Data 4,5,7,8,9,10,13,14,15,16,17,18,19,20,22,24,25,26,27,28,29,0,0,0,0,0,0,0,0,0,0,0,0
4號Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
5號Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6號Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
7號Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
8號Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
9號Data 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,30,31,32,33,0,0,0,0
10號Data 4,5,7,8,9,10,13,14,15,16,17,18,19,20,22,24,25,26,27,28,29,0,0,0,0,0,0,0,0,0,0,0,0
找相同方法分析(演算法分析):
第一種輸出結果:
1、為便于分析我把每組編上號,如上.
2、開始找相同,首先第一行和第二行(1號和2號)進行比較,1行和2行不相同;第1行再和第3行比較,也不相同;再進行第1行和第4行比較,這兩行相同,隨后就輸出其中的一行。當第一行和下面的所有行都比較完之后;在進行第2行和第3行比較,以此類推。這種比較輸出的結果如下:
第一種輸出結果:
Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 4,5,7,8,9,10,13,14,15,16,17,18,19,20,22,24,25,26,27,28,29,0,0,0,0,0,0,0,0,0,0,0,0
第二種輸出結果:
比較的方法和第一種方法一致,只是輸出形式不同,比較時無論有多少行相同,把相同的只輸出一組,沒有相同的行就不要輸出了,這種情況輸出結果是:
Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 5,6,7,9,10,13,18,19,20,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
Data 4,5,7,8,9,10,13,14,15,16,17,18,19,20,22,24,25,26,27,28,29,0,0,0,0,0,0,0,0,0,0,0,0
要求及說明:
1、在輸出結果中在前面要含有DATA。
2、每行個數33個數,不夠的用“0”補齊;輸出時每行排列順序是從小到大。
3、關鍵是程式輸入的兩部分資料不止前面示例那樣多,每部分可能有百組、上千組或者上萬組。4、每行輸出后面要顯示出該行含有多少個數字。比如n=數字。
5、要有資料的輸入和輸出,并且能保存輸出的資料。
6、在資料輸出時能有選擇性的輸出。比如在找相同后輸出時,只輸出含有n=16,或n從16到18之間的行。當不輸入約束條件時,就把找到的有相同的數全部輸出。
7、這兩種輸出結果,要用兩個程式來完成,也就是要編2個程式。
uj5u.com熱心網友回復:
請問一下,輸入資料是資料串,如上面所示:"Data 2,3,4,9,10,11,15,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
還是
"Data 2,3,4,9,10,11,15,19"
還是陣列(按大小已排序)
dim Data(7) as long
Data(0)=2
Data(1)=3
......
還是陣列(沒有排序)
dim Data(7) as long
Data(0)=9
Data(1)=2
Data(2)=11
......
uj5u.com熱心網友回復:
Dim Data() As String
Dim ArrFlag() As Single
Private Sub Command1_Click()
Open "F:\data.txt" For Input As #1
Dim Z As String
Dim Count As Single
Count = 0
Do Until EOF(1)
Line Input #1, Z
ReDim Preserve Data(Count) As String
Data(Count) = Z
Count = Count + 1
Loop
Close #1
''以上是取出資料
Analyse (Data)
Dim Arr() As String
Arr = GetData_1
For i = 0 To UBound(Arr)
Print Arr(i)
Next
Arr = GetData_2
For i = 0 To UBound(Arr)
Print Arr(i)
Next
End Sub
Private Sub Analyse(ByVal Data) '資料分析
ReDim ArrFlag(UBound(Data)) As Single
Dim i As Single
For i = 0 To UBound(Data) - 1
If ArrFlag(i) = 0 Then
For j = i + 1 To UBound(Data)
If ArrFlag(j) = 0 Then
If Data(i) = Data(j) Then
ArrFlag(i) = 1
ArrFlag(j) = 2
End If
End If
Next
End If
Next
End Sub
Private Function GetData_1() As String() '按第一種方式輸出,注意結果沒有排序
Dim Count As Single
Dim m_Data() As String
Count = 0
For i = 0 To UBound(ArrFlag)
If ArrFlag(i) = 2 Then
ReDim Preserve m_Data(Count) As String
m_Data(Count) = Data(i)
Count = Count + 1
End If
Next
GetData_1 = m_Data
End Function
Private Function GetData_2() As String() '按第二種方式輸出
Dim Count As Single
Dim m_Data() As String
Count = 0
For i = 0 To UBound(ArrFlag)
If ArrFlag(i) = 1 Then
ReDim Preserve m_Data(Count) As String
m_Data(Count) = Data(i)
Count = Count + 1
End If
Next
GetData_2 = m_Data
End Function
uj5u.com熱心網友回復:
有這么麻煩嗎?直接丟資料庫里,一個SQL陳述句不就查詢出來了。
uj5u.com熱心網友回復:
弄個資料庫,不是更麻煩嘛
uj5u.com熱心網友回復:
用字典會好些吧:Dim dic As Object
Private Sub Command1_Click()
Set dic = CreateObject("scripting.dictionary")
Dim s() As String, i As Long
Open "F:\data.txt" For Input As #1
s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1
For i = 0 To UBound(s)
dic(s(i)) = dic(s(i)) + 1
Next
MsgBox data(1)
MsgBox data(0)
End Sub
Function data(ByVal outtype As Byte) As String
Dim i As Long
For Each d In dic.keys
If dic(d) > 1 Then
For i = 1 To dic(d) ^ outtype
data = data & d & vbCrLf
Next
End If
Next
End Function
uj5u.com熱心網友回復:
彩票?????uj5u.com熱心網友回復:
逗號分割的文本檔案是可以直接當成資料表進行資料庫查詢的,不需要額外的資料庫
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/145080.html
標籤:VB基礎類
