Tekst genereren

  • Onderwerp starter Onderwerp starter gille
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

gille

Gebruiker
Lid geworden
19 okt 2009
Berichten
76
Beste,

Ik sta voor een raadsel/probleem. De titel is misschien verkeerd omschreven, maar ik wil het volgende realiseren.
Hieronder een voorbeeld wat het resultaat moet zijn:

aaaa
aaab
aaac
aaba
aabb
aabc
aaca
aacb
aacc
abaa
abab
...

Ik heb a, b en c in een array geplaatst, en nu zou het programma tekst van 4 tekens moeten genereren met de letters uit de array.
Misschien met een For Next of Do While? Iemand een idee hoe ik hier aan moet beginnen? Ik hoop dat jullie het een beetje begrijpen wat ik bedoel.

Alvast bedankt! ;)
 
Nog wat verder gezocht op het internet en kwam op deze oplossing terecht:

Code:
Dim strTekens() As String = {"a", "b", "c", "d", "e", "f", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
        Dim HighestValue As Integer = 16 ' max value
        Dim NrOfValues As Integer = 4 ' nr of values in one result
        Dim Values(NrOfValues) As Integer
        Dim i As Integer
        For i = 0 To NrOfValues - 1
            Values(i) = 1
        Next
        Values(NrOfValues - 1) = 0 ' to generate first as ALL 1
        For i = 1 To HighestValue ^ NrOfValues
            Values(NrOfValues - 1) += 1
            For j As Integer = NrOfValues - 1 To 0 Step -1
                If Values(j) > HighestValue Then
                    Values(j) = 1
                    Values(j - 1) += 1
                End If
            Next
            Dim Result As String = ""
            For j As Integer = 0 To NrOfValues - 1
                For intTeller As Integer = 0 To HighestValue - 1
                    If Values(j) = intTeller + 1 Then Result &= strTekens(intTeller)
                Next
            Next
            lstKeys.Items.Add(Result)
            lblAantal.Text = "Number of keys: " & lstKeys.Items.Count
        Next

Ik heb nog één probleem: ik zou NrOfValues willen opdrijven tot 40 ipv 4. (Dat zijn 1,46150164 * 10^48 resultaten!!!)
Het klinkt gek, dat weet ik. Maar als ik dit naar 40 verander, loopt mijn programma vast.
Moet ik andere variabelen gebruiken ofzo?
 
Laatst bewerkt:
Je programma loopt niet vast :) hij is aan het denken! :D


wat je moet doen is een backgroundworker gebruiken, of een multithreaded app maken.


zet de code die alles genereerd maar eens in een backgroundworker, en onder de knop waar die zat zet je:
[CPP]BackgroundWorker1.RunWorkerAsync()[/CPP]

vergeet niet deze code in de load te zetten:

[CPP] Me.CheckForIllegalCrossThreadCalls = False[/CPP]

[video=youtube;j1qgCK33PrY]http://www.youtube.com/watch?v=j1qgCK33PrY&feature=youtu.be[/video]

deze tutorial kunt U ook vinden op www.mi-soft.nl : http://mi-soft.nl/visual-basic-backgroundworker/

Download de project bestanden
 
Laatst bewerkt:
Hartelijk dank mastermindzh! Zal dit morgen eens uitproberen. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan