VisualBasic Array - Funktionsübergabe

Doenes91

Cadet 4th Year
Dabei seit
Juli 2008
Beiträge
96
Hallo!
Ich bin leider kein VB Genie, brauche eure Hilfe.
Ich schreibe morgen eine Klausur und steht grad total auf dem Schlauch...

Es geht um ein Programm, dass Zufallszahlen nach verschiedenen Algorithmen sortieren soll (Bubble, Insert, Selection).

Zunächst übergibt eine Funktion ein Array mit Zufallszahlen.
Nun möchte ich dieses Feld mit der Funktion "bubblesort" sortieren und anschließend ausgeben.

Quellcode:


Option Explicit

Private Function zufallszahlen(ByVal ANZ As Integer) As Integer()


Dim i As Integer
Dim zahlen() As Integer

ReDim Preserve zahlen(ANZ)

For i = 0 To ANZ Step 1

zahlen(i) = Int((100 * Rnd) + 1)


Next i

zufallszahlen = zahlen()

End Function



Private Sub cmdErzeugen_Click()

Dim anzahl As Integer
Dim i As Integer
Dim zufall() As Integer
Dim bubbleFeld() As Integer




anzahl = CInt(txtAnz.Text)

lstZufall.Clear
lstBubble.Clear


ReDim Preserve zufall(anzahl)
ReDim Preserve bubbleFeld(anzahl)

zufall() = zufallszahlen(anzahl)
bubbleFeld() = bubblesort(zufall(), anzahl)




For i = 1 To anzahl Step 1
lstZufall.AddItem zufall(i)
Next i


End Sub

Private Sub Form_Load()

Randomize

End Sub


Private Function bubblesort(ByRef zahlen() As Integer, ByVal ANZ As Integer) As Integer


Dim i As Integer
Dim j As Integer
Dim temp As Integer



For i = 0 To UBound(zahlen()) Step 1

For j = 0 To UBound(zahlen()) Step 1

If zahlen(j) > zahlen(j + 1) Then

temp = zahlen(j)
zahlen(j) = zahlen(j + 1)
zahlen(j + 1) = temp


End If

Next j

Next i

bubblesort = zahlen()

End Function


Nun bekomme ich immer folgende Fehlermeldung:

"Keine Zuweisung an array möglich!"

Gemeint ist die rot markierte Zeile.
Das erzeugen und ausgeben der Zufallszahlen hat funktioniert.

Bitte helft mir, wenn's geht schnell...hab noch so viel zu tun und ich komme nicht weiter :(

Gruß,
Doenes
Ergänzung ()

Tut mir Leid...ich muss das Thema pushen...
 

_Aqua_

Fleet Admiral
Dabei seit
Juni 2005
Beiträge
10.539
Einen Tag vor der Klausur... ja, ja, wieder jemand der immer wartet, bis aus dem Motivationsproblem ein Zeitproblem wird.


Zum Quelltext:
Ein Array ist ein komplexer Datentyp, den kann man nur mit call by reference übergeben. Die Rückgabe ist hier aber call by value. Das musst du ändern. Das "Wie?" überlasse ich deiner Klausurvorbereitung. Es sollte ohnehin irgendwo in deinen Unterlagen stehen.
 
Zuletzt bearbeitet:

Rossibaer

Lieutenant
Dabei seit
Apr. 2007
Beiträge
739
Falsche Defintion der Funktion:

Code:
Private Function bubblesort(ByRef zahlen() As Integer, ByVal ANZ As Integer) As Integer

bei Rückgabe:

Code:
bubblesort = zahlen()

Dein Rückgabewert ist ein Array, die Funktion definiert jedoch einen Integer als Rückgabewert.

PS: Hoffentlich bin ich zu spät mit meiner Antwort... :D
 
Top