Kopieren eines 2D Arrays ueber ein anders 2D Array...



  • Hallo zusammen,

    Bin momentan in einer Beginner C++ Klasse und bin gerade dabei diese Aufgabe zu loesen. Der Code selbst hat keinen bestimmten zweck. Er soll uns bloss als uebung dienen.

    Mein Problem ist, dass ich keine Ahnung habe, wie ich die Funktion CopyArray2D schreiben soll. 😕
    Mir ist nicht klar wie ich das multidimensionale Array initialisieren soll und wie ich dann das Array innerhalb der Funktion kopiere...

    #include <iostream>
    #include <sstream>
    #include <strstream>
    using namespace std;
    
    int ** NewArray2D( int nRow, int nCol ) { 
    
       int** newArray = new int*[nRow];
    
       for(int i = 0; i < nRow; i++){
          newArray[i] = new int[nCol];
       }
       return newArray;
    }
    
    void InitArray2D( int ** array2D, int nRow, int nCol, int val ){
    
       for(int i =0; i<nRow; i++){
          for(int j=0; j<nCol; j++){
             array2D[i][j]=val;
          }
       }
    }
    
    void CopyArray2D( int ** a2D, int ** b2D, int nRow, int nCol ){ 
    
       // This function copies array b2D over array a2D, which means that all   
       // elements of b2D are copied over corresponding elements of a2D.   
    }
    
    string ToString( int ** array2D, int nRow, int nCol ) { 
    
       strstream ss;
    
       for (int i=0; i<nRow; i++){
    
          for(int j=0; j<nCol; j++){
             ss << array2D[i][j] << "\t"; 
          }
          ss << "\n";
       }    
       ss << '\0';
    
       return ss.str();
    } 
    
    int main(){
    
       const int R=4, C=4;
       int val = 8;
    
       int** a1 = NewArray2D(R, C);
       int** a2; // keine Ahnung wie ich dieses Array initialisieren soll...
    
       InitArray2D(a1, R, C, val);
    
       CopyArray2D(a1, a2, R, C); 
    
       cout << "a2D = \n" << ToString(a1, R, C ) << endl;
    
       return 0;
    }
    

    Bin natuerlich ueber jede Hilfe dankbar.

    Dornenhexe



  • Funktioniert im Prinzip wie InitArray2D() nur das du zum Füllen nicht "val" sondern den jeweiligen Wert des anderen Arrays benutzt:

    for(int i = 0; i < nRow; ++i)
    {
        for(int j = 0; j < nCol; ++j)
             a2D[i][j] = b2D[i][j];
    }
    

    MfG SideWinder



  • Achja, a2 muss natürlich ebenfalls initialisiert werden, warum weißt du nicht wie du das machen sollst? Ganz genau wie a1 auch...

    Und du vergisst, soweit ich das sehe, komplett auf das freigeben des mit new vom Heap geholten Speichers und erzeugst damit Speicherlecks!

    MfG SideWinder


Log in to reply