arrays stapelen in queues

Status
Niet open voor verdere reacties.

andreaugust

Gebruiker
Lid geworden
7 jan 2012
Berichten
105
Ik heb het volgende probleem.
Ik vertrek van een bepaalde array(n,m) en met bepaalde handelingen vloeien hier terug arrays(n,m) uit waarop ik opnieuw dezelfde handelingen uitvoer op die arrays.
Het kan in totaal gaan over duizenden arrays en iedere array heeft een welbepaalde voorganger.
Iedere reeks opeenvolgende arrays eindigt, d.w.z. dat de handeling op de laatste (nog onbekende) array van iedere reeks geen nieuwe array maakt.
Ik had gedacht om deze arrays ��n voor ��n in een queue te plaatsen en met dequeue en enqueue kom ik uiteindelijk iedere laatste array van alle reeksen tegen.
Ik weet echter niet hoe ik automatisch die arrays moet plaatsen, iedere array als object moet toch een andere naam hebben?
Ik dacht ook dat indien dit probleem een oplossing heeft de methode met de queue eleganter is dan bv met trees te werken.
Dank voor ieder antwoord.
 
In principe kan dat prima. Maar is het aantal reeksen ook variabel?

Anders kun je natuurlijk ook een class maken met daarin een queue en de arrays voor die reeks. De class kun je vervolgens in een andere array stoppen en zoveel classes aanmaken als er reeksen zijn. Eventueel kun je die classes dan ook weer verdelen in verschillende threads en kun je processoren met multi-core / hyperthreading optimaal benutten.

master array met X classes
---class
----queue
-----arrays
 
Dank voor het antwoord.
De reeksen zijn hebben een onvoorspelbare lengte.
Ik zal uw antwoord uitproberen of het lukt
 
arrays stapelen in een queue

Ik ben er nog niet aan uit.
Ik wil het ook zo eenvoudig mogelijk maken.
Om concreet te zijn

Dim matrix(3, 3) As Integer
Dim i, j As Integer
Dim q As New Queue


' ik personaliseer de matrix

For i = 1 To 3
For j = 1 To 3
matrix(i, j) = i * j
Next
Next

q.Enqueue(matrix)

'door een bepaalde handeling wijzig ik de matrix en wil deze "nieuwe" matrix ook in de queue plaatsen enz
' voor enkele matrixen zou ik kunnen zeggen dim matrix1(3,3) as integer, dim matrix2(3,3) as integer enz
' maar de nieuwe matrixen (of de oude die gewijzigd is) worden in het programma aangemaakt en het is
' niet mogelijk de bovenstaande werkwijze te verrichten voor duizenden matrixen
' misschien is het zeer eenvoudig maar ik zie het niet
Dank voor een antwoord.
 
Laatst bewerkt:
Hieronder wat code om mijn voorbeeld toe te lichten. De class zou alle code kunnen bevatten die een reeks afhandelt. In dit geval bevat de class slechts 2 routines. 1 om de array in de class te vullen en 1 om de inhoud van de interne array te tonen.

Vervolgens maak ik een array van de gemaakte class aan. Deze kan net zoveel reeksen bevatten als nodig.

Code:
    Public Class arraystore
        Public myArray(,) As Integer

        Public Sub lezen(ByVal input(,) As Integer)
            myArray = input
        End Sub
        Public Sub output()
            Dim i As Integer
            Dim j As Integer
            Dim tekst As String
            For i = 0 To myArray.GetUpperBound(0)
                For j = 0 To myArray.GetUpperBound(1)
                    tekst = tekst + Conversion.Str(myArray(i, j)) + " "
                Next
                tekst = tekst + Chr(13)
            Next
            MessageBox.Show(tekst)
        End Sub

    End Class


    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim reeksen() = New arraystore() {}
        ReDim reeksen(0)
        Dim test(,) As Integer
        ReDim test(2, 2)
        For i = 0 To 2
            For j = 0 To 2
                test(i, j) = (i * j) + 1
            Next
        Next
        reeksen(0) = New arraystore()
        reeksen(0).lezen(test)
        reeksen(0).output()

    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan