Funktion, welche Matrix-Einträge addiert



  • Hallo,

    ich habe eine ganz simples Programm programmiert, welches die Einträge einer 3x3-Matrix ausspucken soll. Dabei soll der Eintrag an einer bestimmten Stelle gleich Zeilenzahl+Spaltenzahl sein. Mir geht es eigentlich nicht um das Programm an sich, sondern um Pointer - denn immer, wenn ich mit denen zu tun habe, läuft was schief.
    Mein Programm enthält eine Funktion, die von einer Matrix (bzw. 2-dim. Feld) abhängt und diese Funktion soll im Hauptprogramm aufgerufen werden:

    #include <iostream>
    #include <stdlib.h>
    using namespace std;
    
    int add(double **A);
    
    int main(void)
    {
    int i,j;
    
    double** A[3][3];          
    
    add(A[3][3]);
    
    }
    
    int add(double **A)
    {
    int i,j;
    for (i=0; i<3; i++)
      for (j=0; j<3; j++)
        A[i][j]=i+j;
    
        for (i=0; i<3; i++)
          {{for (j=0; j<3; j++)
          cout <<A[i][j] <<"   ";} cout <<"\n";}
    }
    

    Das Programm wird zwar kompiliert, stürzt aber nach dem Ausführen ab. Irgendwas hab ich falsch gemacht, aber was?

    Viele Grüße und Danke im Voraus!
    Harald



  • Hi Bruder!

    Du hast ein Zeigerarray deklariert, dieses hat keinen Speicherplatz.
    Dieser müsste in deiner Version noch mit new erzeugt werden.
    Ist aber bei einer im Voraus feststehenden Arraygröße nicht nötig.

    Probierst du so, guckst du unten:

    void add(double A[3][3]) 
    { 
    	for ( int i=0; i<3; i++) 
    	  for (int j=0; j<3; j++) 
    		A[i][j]=i+j; 
        for (int i=0; i<3; i++) 
    	  for (int j=0; j<3; j++) 
    		cout << A[i][j] << "   ";
    }   
    
    int main(void) 
    { 
    	double A[3][3];           
    	add ( A ); 
    	return 0;
    }
    

    Gruß,
    B.B.


Log in to reply