tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
6518
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Kangaxx
    Kangaxx Kangaxx ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Ort
    Vaihingen an der Enz
    Beiträge
    88
    Hallo,

    sitz gerade vor einem kleinen Problem das ich ums verrecken nicht gelöst krieg. Sonderlich viel passendes oder funktionierendes hab ich per Suchfunktion au nicht gefunden.

    Das Problem:
    Benutze den Gauss-Algorithmus um ein LGS zu lösen. Dieses Gleichungssystem will ich als dynamisches, mehrdimensionales array übergeben. Leider find ich den passenden syntaktischen Ausdruck nicht!

    Frage:
    Wie formuliere ich die Funktion damit ich später ein dynamisches mehrdimensionales array als Parameter übergeben kann?


    Gruß Kangaxx
     
    Ahh, the Internet! Where men are men, women are men and little girls are FBI agents.

  2. #2
    Hellie Hellie ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    252
    Ich glaube, es ging, wenn man das mehrdimensionale Array als eigenen Typ definiert.

    Vielleicht klappt's ja

    Grüße
    Hellie
     

  3. #3
    Avatar von Kangaxx
    Kangaxx Kangaxx ist offline Mitglied Silber
    Registriert seit
    Mar 2005
    Ort
    Vaihingen an der Enz
    Beiträge
    88
    Also, habs jetzt sozusagen hinbekommen, war bissle komisch!

    Hab das ganze über nen Pointer gemacht...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    //types
    type Matrix = array of array of double;
    type MatrixPtr = ^Matrix;
     
     
    //Funktionsdefinition
    procedure GaussElimination(pIN : MatrixPtr; pOUT : Matrix);
     
     
    //Übergabe eines arrays als Param:
    //Als Beispiel test()
    procedure Test()
    var pInMatrix    : array of array of double;
         pOutMatrix : Matrix; 
         i                : integer;
    begin
             //Initialisierung des Arrays, beliebige größe
             SetLength(pInMatrix, 5);
             for i:=0 to Length(pInMatrix)-1 do
             begin
                  SetLength(pInMatrix[i],5);
             end;
     
                   //Füllen der Matrix mit irgendwelchen Zahlen...
             
     
        //Übergabe:
        GaussElimination(MatrixPtr(@pInMatrix),pOutMatrix);
     
    end;


    Das hat so funktioniert! In der Gauss-Funktion muss dann lediglich der Parameter dereferenziert werden ( pIN^ ), dann kann man auf das vorher erstelle mehrdimensionale array zugreifen.

    Wenn man das zu übergebende Array allerdings nicht dynamisch , so wie oben, erzeugt, sondern mit festen Werten:
    Code :
    1
    
    pArr : array[1..3] of array[1..4] of double

    so funktioniert das ganze irgendwie nicht.. es wird zwar die korrekte Speicheradresse mit dem Pointer übergeben allerdings scheint die derefernzierung nicht zu funktionieren.

    Werd die Funktion dann wohl einfach überladen!

    Danke für die Hilfe,
    gruß
    Kangaxx
     
    Ahh, the Internet! Where men are men, women are men and little girls are FBI agents.

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 25.12.08, 07:07
  2. Antworten: 5
    Letzter Beitrag: 30.04.07, 15:03
  3. Mehrdimensionales Array ...
    Von LadySunshine im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 23.06.04, 11:28
  4. mehrdimensionales array
    Von jenno im Forum PHP
    Antworten: 2
    Letzter Beitrag: 08.06.04, 14:23
  5. mehrdimensionales array
    Von kimbo im Forum PHP
    Antworten: 2
    Letzter Beitrag: 26.10.03, 09:55