none
Funktion im Code aufrufen RRS feed

  • Frage

  • Guten Morgen Experten,

    ich habe Probleme bei dem Aufruf von einer vorher programmierten Funktion in meinem Code, vielleicht kann mir als blutiger Anfänger jemand erklären, wie Funktionen im Sub Teil meines Programms richtig aufgerufen werden.

    Ich habe einen Code geschrieben, welcher überprüfen soll ob ein Array (Daten1) und ein zweites Array (Daten2) (Dies geschieht durch die Funktion istSortiert, welche ich problemlos ausrufen kann) jeweils sortiert sind. Wenn dies der Fall ist, soll das Programm die beiden Arrays (sortiert!) zu einem Array3 zusammenfügen (Durch die Funktion gesamtliste- diese bekomme ich aber nicht ausgelöst).

    Code:

    Option Strict On
    Option Explicit On
    Imports System.Console
    
    Module Module1
    
        Function istsortiert(ByVal daten() As Integer) As Boolean
            Dim i As Integer
            While (i < daten.Length - 1) AndAlso (daten(i) <= daten(i + 1))
                i += 1
            End While
            istsortiert = i = daten.Length - 1
        End Function
    
        Function gesamtliste(ByVal daten1 As Integer(),
                ByVal daten2 As Integer(),
                ByRef sortiert As Boolean) As Integer()
    
    
            Dim i1, i2, ig As Integer
            Dim daten3() As Integer
    
            If istsortiert(daten1) AndAlso istsortiert(daten2) Then
                sortiert = True
    
                ReDim daten3(daten1.Length + daten2.Length - 1)
                For ig = 0 To daten1.Length + daten2.Length - 1
                    If i1 < daten1.Length AndAlso (i2 >= daten2.Length OrElse daten1(i1) <= daten2(i2)) Then
                        daten3(ig) = daten1(i1)
                        i1 += 1
                    Else
                        daten3(ig) = daten2(i2)
                        i2 += 1
                    End If
                Next
            Else
                sortiert = False
            End If
            gesamtliste = daten3
    
    
        End Function
    
        Sub Main()
    
    
            Dim daten1(2) As Integer
            Dim daten2(2) As Integer
    
    
            daten1(0) = 1
            daten1(1) = 2
            daten1(2) = 4
    
    
            daten2(0) = 1
            daten2(1) = 2
            daten2(2) = 3
    
            gesamtliste()
    
          
    
            ReadLine()
    
    
    
        End Sub
    
    
    End Module
    

    Meine Frage: Was muss bei gesamtliste() in den Klammern stehen, damit ich im Code meine Funktion aufrufen kann?

    Beste Grüße & vielen Dank

    mr_simeon

    Mittwoch, 4. November 2015 08:58

Antworten

Alle Antworten

  • Function gesamtliste(ByVal daten1 As Integer(), ByVal daten2 As Integer(), ByRef sortiert As Boolean) As Integer()

    Hallo,

    den Methodenrumpf hast Du doch selbst definiert und die dort angegebenen Parameter muss Du da so übergeben. Die beiden Array hast Du in der "Main" ja schon definiert und gefüllt, die Du übergeben kannst, fehlt nur noch eine Variable für "sortiert" und ein weiteres Array fürs Endergebnis.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 4. November 2015 09:13
  • Hallo Olaf,

    danke für Deine schnelle Antowort. Kannst Du mir mal anhand meines Codes zeigen, wie das aussehen soll?

    Ich habe gerade in Visual Studio herumprobiert und es will nicht so recht klappen...

    Gruß & Danke,

    mr_simeon

    Mittwoch, 4. November 2015 09:36
  • Du ersetzt deine folgende Zeile

     gesamtliste()

    mit dem folgenden Code

    Dim istResultSortiert As Boolean = false
    Dim resultValues() As Integer = gesamtliste(daten1, daten2, istResultSortiert)
    
    If istResultSortiert Then
    	'TODO: Es ist sortiert
    Else
    	'TODO: Es ist nicht sortiert
    End If

    Damit solltest du ein Stück weiterkommen...

    Gruß Martin


    Donnerstag, 5. November 2015 08:43