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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.