Zeiger auf mehrdimensionale Arrays



  • Moin!!!
    Ich hab vor ein Programm zu schreiben, was die determinanten von 2x2 und 3x3 Matrizen berechnet.
    Dazu würde ich gerne ein Mehrdimansionales Array machen für die einzelnen Elemente, so ungefähr nach diesem Muster: double matrix[3][3] z.B. für eine 3x3 Matrix.
    Ich möchte die berechnung und das eingeben der Elemente nun aber gerne in extra funktionen machen. Wenn ich aber einen Pointer übergebe meckert der.

    Mein Prog sieht im moment so aus:

    #include <stdio.h>
    
    /***************************************Funktion_einlesen***************************************
    *                                                                                              *
    *  ÜBERGABEPARAMETER: Dimension, pointer auf verwendete matrix 						           *
    *  RÜCKGABEWERT: Keiner               			                                               *
    *  AUFGABE: Füllen der Matrix mit werten	                                                   *
    *                                                                                              *
    ***********************************************************************************************/
    
    void einlesen(int dimension, double *matrix)
    {
    int zeile, spalte;
    
       switch(dimension)
       {   
       case 1:
          {
          printf("Bitte Element eingeben!\n");
          scanf("%lf", matrix);
          break;
          }
    
       case 2:
          {
          for(zeile=1; zeile<=2; zeile++)  
             {
             for(spalte=1; spalte<=2; spalte++)
                {
                printf("Bitte Element [%d][%d] eingeben!\n", zeile, spalte);
                scanf("%lf", &matrix[zeile-1][spalte-1]);
    	        }
             }
          break;
          }
       }   
    }
    
    int main(void)
    {
    double matrix1m1[1], matrix2m2[2][2];
    int dimension=2;
    
    switch(dimension)
    {
    case 1:
       einlesen(dimension, matrix1m1);
    case 2:
       einlesen(dimension, matrix2m2);
    }
    
    return 0;
    }
    

    Das mit der einermatrix ist da noch weil ich was ausprobiert habe. Mir geht es jetzt halt nur um diese Mehrdimensionale sache. Hoffe mir kann jemand helfen.

    Ach ja, die fehlermeldungen lauten:
    error C2109: Index benoetigt ein Feld oder einen Zeigertyp
    error C2102: '&' erwartet L-Wert

    MfG Jan



  • Taz schrieb:

    void einlesen(int dimension, double *matrix)

    Versuch mal diese hier:

    void einlesen(int dimension, double *matrix[2])
    

    bzw. bei 3 dimensionalen Array

    void einlesen(int dimension, double *matrix[3])
    

    Ich glaub so müsste es gehen, wie du nun das Array in der fkt ansprichst
    musste ausprobieren, aber ich glaub das geht so:

    *matrix[0].memberfkt
    *matrix[1].memberfkt
    

    ist nun auch noch ungetestet!

    mfg


Log in to reply