jedes 12. Element aus einem array kopieren

Gast #6957538
Lesenswert?

Hallo,

ich habe ein Array, welches 100 Elemente hat.
Davon soll ich jedes 12. in ein anderen Array packen.

Wie wäre da das beste vorgehen?
Ich würde es momentan mit einer for-schleife machen
1
static uint8_t y = 0;
2
for(uint8_t x=0; x<100; x+=12)
3
{
4
  array2[y] = array1[x];
5
  y++;
6
}

Danach muss ich das ganze 8 mal durchlaufen lassen. Ich bekomme also 8 
mal ein Array mit 100 elementen, (also 800 elemente), wo jeder 12 in 
einem anderen array gespeichert werden soll.
Beim 2. mal darf dann allerdings nicht bei element 0 gestartet werden, 
sondern bei element 8.
Das letzte element vom 1. Zyklus ist das 96. Element. sprich 12 Elemente 
weiter ist das 8. im 2. Zyklus.

Da würde ich anstelle von der 0 eine neue variable einfügen und mit 
dieser dann den Start der for-schleife ausrechnen.
1
static uint8_t y = 0;
2
static uint8_t z = 0;
3
for(uint8_t x=z; x<100; x+=12)
4
{
5
  array2[y] = array1[x];
6
  y++;
7
  z = x;
8
}
9
z = z + 12 - 100;

Gibt es da nicht aber einen schöneren weg?
Gast #6957543
Lesenswert?

Sebastian R. schrieb:
> Zweite For-Schleife drumherum, die sich um den Indes-Offset/Startwert
> kümmert?

Ich habe die Daten ja noch nicht.
Es wird die Funktion mit den jeweiligen Daten neu aufgerufen.
Der Buffer, in dem die 100 elemente sind, wird dann jedesmal neu 
beschrieben.

Sebastian R. schrieb:
> Und irgendwie klingt das für mich noch, als sei ein Modulo praktisch.

Daran hatte ich auch gedacht. Habe aber gedacht, dass es langsamer wäre, 
da ja jedesmal gerechnet werden muss.
1
static uint8_t y = 0;
2
for(uint8_t x=0; x<100; x++)
3
{
4
  if(0 == (x%12))
5
  {
6
    array2[y] = array1[x];
7
    y++;
8
  }
9
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren