Kan iemand me zeggen waarom ik met onderstaand progsel als ik een aantal getallen ingeef deze getallen niet gesorteert krijg? Werkt een object altijd als string dan? En waarom werkt het wel als'k "Dim lijst() As Object = {20, 44, 18, 42, 3}" i.pv. manuele invoer gebruik?
uitvoer:
Geef het aantal elementen:
10
Geef de elementen die gesorteerd moeten worden.
10
5
2
01
20
03
5
4
30
12
Ongesorteert:
10 5 2 01 20 03 5 4 30 12
Gesorteert:
01 03 10 12 2 20 30 4 5 5
uitvoer:
Geef het aantal elementen:
10
Geef de elementen die gesorteerd moeten worden.
10
5
2
01
20
03
5
4
30
12
Ongesorteert:
10 5 2 01 20 03 5 4 30 12
Gesorteert:
01 03 10 12 2 20 30 4 5 5
Visual Basic .NET:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
| Module Module1 Sub Main() 'Dim lijst() As Object = {"Jan", "Jos", "Koen", "Dirk", "Jef"} 'Dim lijst() As Object = {20, 44, 18, 42, 3} Dim lijst() As Object Dim intaantal, inttel As Integer Console.WriteLine("Geef het antal elemente: ") intaantal = Console.ReadLine ReDim lijst(intaantal - 1) Console.WriteLine("Geef de elementen die gesorteerd moeten worden.") For inttel = 0 To intaantal - 1 lijst(inttel) = Console.ReadLine Next Dim objreeks As Object Console.WriteLine("Ongesorteert:") For Each objreeks In lijst Console.Write(objreeks.ToString & vbTab) Next Console.WriteLine() bubblesort(lijst, lijst.GetLength(0) - 1) Console.WriteLine("Gesorteert:") For Each objreeks In lijst Console.Write(objreeks.ToString & vbTab) Next Console.Read() End Sub Public Sub bubblesort(ByRef rij() As Object, ByVal lngindex As Long) Dim inttel, inttel2 As Integer Dim objhulp As Object For inttel = lngindex - 1 To 0 Step -1 For inttel2 = 0 To inttel If rij(inttel2 + 1) < rij(inttel2) Then objhulp = rij(inttel2) rij(inttel2) = rij(inttel2 + 1) rij(inttel2 + 1) = objhulp End If Next Next End Sub End Module |