Getallen

Status
Niet open voor verdere reacties.
Moet het dat getallen omgezet worden naar letters

Als dit moet dan zou ik een replace functie gebruiken.
iets van str = str.replace("0","A")

Of als je al direct letters wilt gebruiken:

Code:
Public Class Form1
    Dim dt As New DataTable
    Dim L() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"}
    Dim UB, UBm1 As Integer

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        dt.Columns.Add("PreMutaties")

    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        GetPermutation()
        DataGridView1.DataSource = dt
    End Sub

    Private Sub GetPermutation()
        Dim I, J As Integer
        Dim K As String
        UB = L.GetUpperBound(0)
        UBm1 = UB - 1
        Do
            I = UBm1
            Do While I > 0 And L(I) >= L(I + 1)
                I -= 1
            Loop
            K = L(I)
            J = UB
            Do While J > 0 And L(J) <= K
                J -= 1
            Loop
            L(I) = L(J)
            L(J) = K
            Array.Reverse(L, I + 1, UB - I)
            Dim str As String = String.Join("", L)
            Dim dr As DataRow = dt.NewRow
            dr.Item("PreMutaties") = str
            dt.Rows.Add(dr)
        Loop While J
    End Sub
End Class
 
Hallo Ronald,

Het eerste item in de array hoort toch altijd bij A, de tweede bij B. Als je alle mogelijkheden gevonden hebt is het misschien nog nodig de gevonden oplossingen klaar te maken voor gebruik. Dat zou niet een groot probleem moeten opleveren.

De aanpassing in de naam van de functie zoals je die in een eerdere post geeft is inderdaad nodig. Het was mij ontgaan.

Goed gevonden code Spiderman. Dat scheelt een hoop gepuzzel :thumb:

Groet,
Hunac
 
Spiderman,

De code werkt niet goed. Hij mist de allereerste mogelijkheid en de 1 na laatste doet hij dubbel. Enig idee dit te verhelpen?

Het punt waar met mij omgaat is niet zozeer dat ik die mogelijkheden als geheel krijg. Ik moet echt het A is de eerste in de rij, B is de tweede, C is het derde getal. Dus wel dat gehele getal, maar dan elk getal apart in een Integer.

Gr. Ronald!:)
 
Hoi,

Om de eerste regel erbij te krijgen:
Code:
    Private Sub GetPermutation()

 [COLOR="Red"]       Dim dr As DataRow = dt.NewRow
        dr.Item("PreMutaties") = String.Join("", L) 'Voeg de eerste regel toe
        dt.Rows.Add(dr)[/COLOR]

        Dim I, J As Integer
        Dim K As String
        UB = L.GetUpperBound(0)
        UBm1 = UB - 1
        Do
            I = UBm1
            Do While I > 0 And L(I) >= L(I + 1)
                I -= 1
            Loop
            K = L(I)
            J = UB
            Do While J > 0 And L(J) <= K
                J -= 1
            Loop
            L(I) = L(J)
            L(J) = K
            Array.Reverse(L, I + 1, UB - I)
            Dim str As String = String.Join("", L)
            dr = dt.NewRow
            dr.Item("PreMutaties") = str
            dt.Rows.Add(dr)
        Loop While J
    End Sub

De rode code, voegt de eerste regel toe
Wat betreft de dubbele regel, die zie ik niet.
Ik heb wel alle waardes nu in Excel staan, en laat die even kijken of er dubbele in staan.
Probleem alleen is dat Excel hier wel even tijd voor nodig heeft (duurt nog een uurtje of wat)

Als hij klaar is zal ik melden of er inderdaad dubbelen in zitten.
 
Hij doet zeg maar de eerste van de laatste nog een keer.
Ter verduidelijking :P.

Ik heb geprobeerd nu met L(1,2,3,4,5).

En dan doet ie helemaal op het einde:

Code:
543210
[COLOR="Red"]501234[/COLOR]

Het rode stuk is al een keer geweest. Dat is namelijk de eerste van de rij die begint met 5.

Ik hoop dat je er uit komt.

Gr. Ronald!:)

PS. Die eerste doet het nu ;)
 
Laatst bewerkt:
Hoi,

FF vlug getest en volgens mijn klopt hij nu. (Heb alleen getest met A t/m E)

Code:
    Private Sub GetPermutation()

        Dim dr As DataRow = dt.NewRow
        dr.Item("PreMutaties") = String.Join("", L) 'Voeg de eerste regel toe
        dt.Rows.Add(dr)

        Dim I, J As Integer
        Dim K As String
        UB = L.GetUpperBound(0)
        UBm1 = UB - 1
        Do
            I = UBm1
            Do While I > 0 And L(I) >= L(I + 1)
                I -= 1
            Loop
            K = L(I)
            J = UB
            Do While J > 0 And L(J) <= K
                J -= 1
            Loop
            L(I) = L(J)
            L(J) = K
            Array.Reverse(L, I + 1, UB - I)
            [COLOR="Red"]If J <> 0 Then[/COLOR]
                Dim str As String = String.Join("", L)
                dr = dt.NewRow
                dr.Item("PreMutaties") = str
                dt.Rows.Add(dr)
            [COLOR="red"]End If[/COLOR]
        Loop While J 
    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan