Einträge im Array machen mithilfe Inputbox!

  • Hi, wie der Titel schon sagt..."Einträge im Array machen mithilfe Inputbox!" vllt kann mir da wer helfen...

    [autoit]

    #include <Array.au3>

    [/autoit][autoit][/autoit][autoit]

    $m = InputBox("Bitte geben Sie m ein: ","Matrix A")
    $n = InputBox("Bitte geben Sie n ein: ","Matrix A")
    Dim $MatrixA[$m*$n]
    $zaehler = 0
    for $i = 1 to $m
    for $j = 1 to $n
    _ArrayAdd($MatrixA,InputBox("Matrix A","Matrix A"&"["&$i&"]"&"["&$j&"]"))
    Next
    Next
    _ArrayDisplay($MatrixA, "Whole array" )

    [/autoit]

    Er lässt mir hier jedoch soviel frei wieviel ich reserviert habe Dim $MatrixA[$m*$n] sprich wenn ich 2 und 2 eingebe lässt er mir 4 (element 0,1,2,3)frei und fängt mit dem 4. element an...mit _ArrayInsert hab ich es auch schon versucht..

    3 Mal editiert, zuletzt von Valvepro (15. Mai 2008 um 22:41)

  • _ArrayAdd fügt immer ein Neues Elemetn an :) Und ne Matrix würd ich als 2D-Array machen.
    Und ein Array fängt mit Index 0 an! Also das im Loop auch beachten :)

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $m = InputBox("Bitte geben Sie m ein: ","Matrix A")
    $n = InputBox("Bitte geben Sie n ein: ","Matrix A")
    Dim $MatrixA[$m][$n]
    $zaehler = 0
    for $i = 0 to $m-1
    for $j = 0 to $n-1
    $MatrixA[$i][$j] = InputBox("Matrix A","Matrix A"&"["&$i&"]"&"["&$j&"]")
    ;~ _ArrayAdd($MatrixA,InputBox("Matrix A","Matrix A"&"["&$i&"]"&"["&$j&"]"))
    Next
    Next
    _ArrayDisplay($MatrixA, "Whole array" )

    [/autoit]
  • Danke, komisch ich hatte das auch so nur bei mir gings nicht ?(
    Naja, hab nochn Prob. bekomme das hier aus C++ nicht in VB umgesetzt....:(

    Spoiler anzeigen
    [autoit]

    for (i=0;i<m;i++)
    {
    for (j=0;j<l;j++)
    {
    for (s=0;s<n;s++)
    {
    x=x+*(matrixA+n*i+s) * * (matrixB+l*s+j);
    }

    [/autoit] [autoit][/autoit] [autoit]

    *(matrixC+i*l+j)=x;
    x=0;

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    }

    [/autoit]

    Das müsste an in richtung so gehen...

    Spoiler anzeigen
    [autoit]

    for $i = 0 to $m
    for $j = 0 to $l
    for $s = 0 to $l
    $x = $MatrixA[$n][$i+$s] * $MatrixB[$l][$s+$j]
    $x = $MatrixA[$i*$l][$j]
    $x=0
    Next
    Next
    Next

    [/autoit]

    2 Mal editiert, zuletzt von Valvepro (15. Mai 2008 um 16:20)

  • Naja, hier mal das was ich bis jetzt habe!

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $m = InputBox("Bitte geben Sie m ein: ","Matrix A")
    $n = InputBox("Bitte geben Sie n ein: ","Matrix A")
    $l = InputBox("Bitte geben Sie l ein: ","Matrix B")
    Dim $MatrixA[$m][$n]
    Dim $MatrixB[$n][$l]

    [/autoit] [autoit][/autoit] [autoit]

    for $i = 0 to $m-1
    for $j = 0 to $n-1
    $MatrixA[$i][$j] = InputBox("Matrix A","Matrix A"&"["&$i&"]"&"["&$j&"]")
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    for $i = 0 to $n-1
    for $j = 0 to $l-1
    $MatrixB[$i][$j] = InputBox("Matrix B","Matrix B"&"["&$i&"]"&"["&$j&"]")
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $x=0
    for $i = 0 to $m
    for $j = 0 to $l
    for $s = 0 to $l
    $x = $x + $MatrixA[$n][$i+$s] * $MatrixB[$l][$s+$j]
    Next
    $x = $MatrixC[$i*$l][$j]
    $x=0
    Next
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayDisplay($MatrixC, "Whole array" )

    [/autoit]

    Hoffe jmd. kann helfen

  • Ahh, ja :)
    Stimmt das so?:

    Spoiler anzeigen
    [autoit]

    #include <Misc.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $MatrixA[3][4] = [[ 1, 2, 3, 4 ], _
    [ 5, 6, 7, 8 ], _
    [ 9, 10, 11, 12 ]]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Dim $MatrixB[3][3] = [[ 1, 2, 3 ], _
    [ 5, 6, 7 ], _
    [ 9, 10, 11 ]]

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $m = (_Iif(UBound($MatrixA,1) < UBound($MatrixB,1),UBound($MatrixA,1),UBound($MatrixB,1)))
    $n = (_Iif(UBound($MatrixA,2) < UBound($MatrixB,2),UBound($MatrixA,2),UBound($MatrixB,2)))

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("Result Matrix:" & @CRLF)
    For $i = 0 To $m-1
    For $j = 0 To $n-1
    $x = 0
    For $k = 0 To $n-1
    $x += ($MatrixA[$i][$j]*$MatrixB[$i][$k])
    Next
    ConsoleWrite($x & " ")
    Next
    ConsoleWrite(@CRLF)
    Next

    [/autoit]


    //Edit: NEIN, das ist falsch !

  • @Valve,
    leider kommt beim starten deines Script eine Fehlermeldung.
    Kannst du es bitte so ändern, dass es läuft?

    Wenn du nur die leeren Zeilen löschen willst, gibt es von BugFix eine Funkion in der arraymore.au3

  • So vllt:

    Spoiler anzeigen
    [autoit]

    Dim $MatrixC[$m][$l]
    $x=0
    for $i = 0 to $m-1
    for $j = 0 to $l-1
    for $s = 0 to $n-1
    $x = $x + $MatrixA[$i][$s] * $MatrixB[$s][$j]
    Next
    $MatrixC[$i][$j] = $x
    $x=0
    Next
    Next
    _ArrayDisplay($MatrixC)

    [/autoit]


    Ja, so sollte es gehen :)

  • :D Nur Logisches Denken.... Hab Matrizen noch nicht mal in der Schule gehabt :P Wikipedia gelesen und dann an deinem Link getestet :)