Array kopieren: spezial



  • Hi,

    ich hab ein problem mit meinem int-array. es sieht folgendermassen aus: (ist 1D)

    1,4,3,5,2,7,4,6,3,6,3,6,8,4,2,2,6,8,5,3,2,7, usw...

    jetzt möchte ich immer vierer packs, das ist natürlich kein problem, doch da gibt es ein kleines problem: ich möchte nicht so kopieren:
    1,4,3,5
    2,7,4,6
    3,6,3,6

    sondern:
    1,4,3,5
    5,2,7,4
    4,6,3,6
    6,3,6,8

    also immer den letzten mitnehmen. Wie mach ich das am besten? vorallem wenn das Array so ausgegeben werden soll:
    1,4,3,5,2,7,4,6,3,6,3,6,8,4,2,2,6,8,5,3,2,7,

    1,4,3,5     5,2,7,4,    4,6,3,6
    6,3,6,8,    8,4,2,2,    2,6,8,5
    5,3,2,7     ...
    


  • vier Schritte nachvorne, einen zurück...

    Devil



  • müsste so funktionieren, wird aber nichts kopiert ...
    int main(int argc, char* argv[])
    {
       int zahlen[]={1,4,3,5,2,7,4,6,3,6,3,6,8,4,2,2,6,8,5,3,2,7};
       int le=sizeof(zahlen)/sizeof(int);
       int i=0,j;
       while (i<le)
       {
          for(j=0;j<4&&i+j<le;j++) cout << zahlen[i+j] << ",";
          cout << endl;
          i+=3;
       }
       return 0;
    }
    


  • Sorry, auf die spezielle Ausgabeform angepasst.

    int main(int argc, char* argv[])
    {
       int zahlen[]={1,4,3,5,2,7,4,6,3,6,3,6,8,4,2,2,6,8,5,3,2,7};
       int le=sizeof(zahlen)/sizeof(int);
       int i=0,j;
       while (i<le)
       {
          for(j=0;j<4&&i+j<le;j++) cout << zahlen[i+j] << ",";
          i+=3;
          if(i/3%3) cout << "   ";
          else cout << endl;
       }
       return 0;
    }
    


  • int array[]= {...};
    
    vector<vector<int> > ergebnis;
    
    for (int i=0; i<sizeof(array)/sizeof(*array); i+=3) {
       vector<int> tmp;
       copy (array+i, array+i+4, back_inserter(tmp));
       ergebnis.push_back(tmp);
    }
    

Anmelden zum Antworten