Archief - [PROG]VB.net Probleem met Insertion Sort van een array

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Nny

Legacy Member
Hallo,
Ik moet voor de avondschool een "progje" schrijven waarmee Euro waardes worden weergegeven en er logischerwijs ook nieuwe waardes aan kunnen toegevoegd worden,. Een soort conversietabel dus.

Nu zit ik met het volgende probleem. Als ik een nieuwe al dan niet fictieve munteenheid wil ingeven komt deze niet in mijn array terecht, dus ik kan die dus ook niet in mijn array sorteren. Kan er eventueel iemand eens kijken naar mijn code en me wat tips geven.

Dank bij voorbaat.

NNy
Code:
Module EuroConverions

    Sub Main()
        Dim count As Integer = 10
        Dim currencies As String() = {"ATS", "DEM", "ESP", "FIM", "FRF", "IEP", "ITL", "LUF", "NLG", "PTE"}
        Dim conversionValues As Decimal() = {13.7603, 1.95583, 166.386, 5.94573, 6.55957, 0.787564, 1936.27, 40.3399, 2.20371, 200.482}

        Do
            Console.Write("Currencies : ")
            Dim index As Integer
            For index = 0 To count - 2
                Console.Write(currencies(index) & " / ")
            Next
            Console.WriteLine(currencies(index))
            Console.Write("Currency ? : ")
            Dim currency As String = Console.ReadLine()
            Dim upperbound As Integer = count - 1
            Dim lowerbound As Integer = 0
            Dim gevonden As Boolean = False
            Dim uitgeput As Boolean = False
            Do Until gevonden OrElse uitgeput
                index = (lowerbound + upperbound) \ 2
                gevonden = (currency = currencies(index))
                uitgeput = (upperbound <= lowerbound)
                If Not (gevonden OrElse uitgeput) Then
                    If currency > currencies(index) Then
                        lowerbound = index + 1
                    Else
                        upperbound = index - 1
                    End If
                End If
            Loop

            If gevonden Then
                Console.WriteLine("Amount " & currency & "? : <input> " & (conversionValues(index)))
                Console.WriteLine("Conversion : " & (conversionValues(index) & (currencies(index) & " = 1 EUR")))

            Else
                Console.Write("Add Currency ( Y/N ) ? : ")
                Dim addCurrency As Char = Console.ReadLine()
                If addCurrency = "y"c OrElse addCurrency = "Y"c Then
                    Console.Write("Conversion Value " & currency & " ( = 1 EUR ) ? : ")
                    Dim conversionValue As Decimal = Console.ReadLine()
                    'Stop

                     '... insertion sort ...
                    Dim unsortedCount As Integer = count - 1
                    Dim startIndexUnsortedPart As Integer = 1
                    Dim backup As Integer
                    Do Until (unsortedCount = 0)
                        startIndexUnsortedPart = count - unsortedCount
                        ' 
                        backup = conversionValues(startIndexUnsortedPart)
                        ' 
                        index = startIndexUnsortedPart
                        Do While (index - 1 >= 0) AndAlso (conversionValues(index - 1) > backup)
                            conversionValues(index) = conversionValues(index - 1)
                            index -= 1
                        Loop
                        ' 
                        conversionValues(index) = backup
                        ' 
                        unsortedCount -= 1
                    Loop

                End If
            End If
        Loop
        Console.ReadLine()
    End Sub
End Module
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan