Zweidimensionales Array



  • Ich will ein zweidimensionales dynamisches Integer Array erstellen (mit malloc). Das Array soll am Anfang die Größe 100*8 (Zeilen*Spalten) haben. Sollte die Anzahl die Zeilen überschritten werden, so soll die Anzahl der Spalten um 100 erweitert(mit realloc) werden (auf dann 200). Die Werte in den ersten 100 Zeilen soll aber erhalten bleiben. Hat jemand ne Idee wie das aussehen könnte?



  • mh, wie das geht weis ich net! aber ich mach dir nen andren vorschlag: wenn du eh nur 2spalten machen willst, kannst du ja index 0 und alle geraden zahlen als spalte 1 nehmen und die ungeraden als spalte2. so würde ich mir helfen...

    ich weiß ich bin zwar keine wirklich hilfe, aber falls es net anders geht...



  • Was willst du genau?

    array=realloc(array, 200*8*sizeof(int));
    

    😕

    [ Dieser Beitrag wurde am 16.06.2003 um 22:37 Uhr von RTC editiert. ]



  • ein zweidimensionales array kannst du folgendermassen anlegen:

    int **array;
    array = malloc(100*sizeof(int*));
    
      for (i=0;i<8;i++){
        matrix[i]=malloc(8*sizeof(int));
      }
    

    danach hast du ein zweidimensionales array das du ueber die array-notation array[i][z] ( i=0-99,z=0-7) ansprechen kannst



  • wenn du dein array dann noch dynamisch erweitern willst sieht das wie folgt aus

    int main (void)
    {
      int i,j;
      int **matrix;
    //erstellen des arrays
    
      matrix = malloc(2*sizeof(int*));
    
      for (i=0;i<2;i++){
        matrix[i]=malloc(4*sizeof(int));
      }
    
    //beschreiben des arrays
      for (i=0;i<2;i++){
        for (j=0;j<4;j++){
          matrix[i][j] = j;
    
        }
      }
    //erweitern des arrays
      matrix = realloc(matrix,4*sizeof(int*));
      for (i=0;i<4;i++)
        matrix[i] = realloc(matrix[i],4*sizeof(int));
    
    //beschreiben der neu hinzugekommenen array-Felder
     for (i=2;i<4;i++){
        for (j=0;j<4;j++){
          matrix[i][j] = j;
    
        }
      }
    
    //Ausgabe  aller (neuer und alter) Felder
    
       for (i=0;i<4;i++){
         printf("\n");
        for (j=0;j<4;j++)
         printf("%10d",matrix[i][j]);
      }
         printf("\n");
      return 0;
    }
    

    viel Spass damit

    [ Dieser Beitrag wurde am 17.06.2003 um 00:05 Uhr von Amtrak editiert. ]



  • Danke, das hat geholfen !


Anmelden zum Antworten