login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Array : wie kan deze puzzel tot een goed einde brengen ? Ik heb een basis code, maar geraak niet verder dan dit. (Opgelost)

Offline DavidWebb - 13/05/2012 16:54
Avatar van DavidWebbLid Hallo,

Ik zoek een code die dit op het scherm brengt:

Numbers < capacity 2, count 0 > :
Number ? : 10
Numbers < capacity 2, count 1 > : 10
Number ? : 5
Numbers < capacity 2, count 2 > : 5 10
Number ? : 7
Numbers < capacity 4, count 3 > : 5 7 10
Number ? : 5
Numbers < capacity 4, count 4 > : 5 5 7 10
Number ? : 0
Numbers < capacity 8, count 5 > : 0 5 5 7 10
Number ? : 6
Numbers < capacity 8, count 6 > : 0 5 5 6 7 10
Number ? : 8
Numbers < capacity 8, count 7 > : 0 5 5 6 7 8 10
Number ? : 9
Numbers < capacity 8, count 8 > : 0 5 5 6 7 8 9 10
Number ? : 15
Numbers < capacity 16, count 9 > : 0 5 5 6 7 8 9 10 15
Number ? : - 5
Numbers < capacity 16, count 10 > : -5 0 5 5 6 7 8 9 10 15
Number ? : _

De in te voeren getallen (zie number ? + waarde die dient ingevoerd te worden, dus eerste getal dat dient ingevoerd te worden is 10, dan 5 enz.) worden in een array op de juiste plaats ingevoegd. De array wordt op een "intelligente wijze" vergroot indien noodzakelijk. Dit wil zeggen dat er vertrokken wordt van een bepaalde capaciteit (2 elementen) en dat indien nodig de capaciteit wordt verdubbeld. Enkel de opgevulde elementen worden afgeprint. Het is niet de bedoeling de array steeds te sorteren na het toevoegen van een waarde, maar eerder om de waarde meteen op de juiste plaats in te voegen.

Ik heb volgende code in elkaar gebrokkeld, maar ik versta niet op welke manier je aan de oplossing kan komen. Kan iemand me helpen a.u.b.?

Module Module 1
Sub Main()
Dim capacity As Integer = 2
Dim count As Integer
Dim numbers(capacity - 1) As Integer
'
Do
Dim index As Integer
Console.Write("Numbers ( capacity " & capacity & _
", count " & count & " ) : ")
For index = 0 To count - 1
Console.Write(numbers(index) & " ")
Next
Console.WriteLine()
Console.Write("Number ? : ")
Dim number As Integer = Console.ReadLine()
count += 1
If count > capacity Then
capacity *= 2
ReDim Preserve numbers(capacity - 1)
End If
numbers(count - 1) = number
Loop
End Sub
End Module

2 antwoorden

Gesponsorde links
Offline Stijn - 16/05/2012 19:16
Avatar van Stijn PHP expert Je kan een functie schrijven die de positie zoekt. Aangezien je array altijd gesorteerd is, is dit redelijk simpel te doen.

Je hebt bv de volgende array al in je geheugen zitten: 1 3 4 4 5 6 9

Je wilt het getal 8 erbij zetten. Je kijkt naar de het middelste getal. Je array telt 7 elementen, dus is het 4e element het middelste. Dat is het getal 4. Het getal 8 is groter dan 4, dus je getal 8 zal ergens tussen het 4e element en het laatste element zitten. Je zoekt terug maar dit keer zoek je in het rechterdeel van je array: 4 5 6 9
Dan doe je het allemaal opnieuw. Dan zou je uitkomen dat je tussen 6 en 9 moet liggen.
Bedankt door: DavidWebb
Offline DavidWebb - 17/05/2012 16:27 (laatste wijziging 18/05/2012 14:30)
Avatar van DavidWebb Lid Hallo,

Ik heb deze code gevonden...

Private cijfers As New List(Of String)
Sub Main()
Dim input As String = ""
Dim count As Integer = 0
Do
cijfers.Sort()
Dim temp As String = ""
input = ""
For Each item As Integer In cijfers
temp &= " " & item.ToString
Next
Console.WriteLine("Numbers < count " & count.ToString & " > :" & temp)
input = Console.ReadLine()
If IsNumeric(input) Then cijfers.Add(CInt(input)) : count += 1 Else _
Console.WriteLine("Invalid input. Try again.")
Loop Until input = ""
End Sub

Het probleem is dat de cijfers er niet in de juiste volgorde op komen.

Het eerste getal dat je bijvoorbeeld invoert is 10 en 10 komt op het scherm.

Wanneer je erna 5 zou invoeren zou 5 10 in die volgorde op het scherm moeten komen.

Voer je erna - 5 in, zou - 5 5 10 op het scherm moeten komen, in die volgorde.

Iemand een ideetje?

Mvg,
DavidWebb
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.176s