Sida 1 av 1

Arduino nybörjarefråga om Arrays

Postat: 15 mars 2016, 19:38:41
av RadioDJ
Jag har 3 arrays
a, b och c.
a innehåller 1 2 3
b 4 5 6
c 7 8 9

Jag skulle vilja slå ihop dessa till en ny array som i sin tur då ska innehålla 1 2 3 4 5 6 7 8 9.

Hoppas Ni förstår mitt något kryptiska exempel.

Hur gör jag detta??

Re: Arduino nybörjarefråga om Arrays

Postat: 15 mars 2016, 20:17:44
av JanErik
Enda är nog att skapa en ny array 'd' med utrymme för alla tre tidigare. Sedan kopiera in innehållet.
Om innehållet i dem kommer att ändra kan du eventuellt skapa en array av pekare som du sätter att peka på elementen i de tre tidigare.
Bäst att designa programmet att använda bara en stor om det ändå är det tänkta slutresultatet.

Re: Arduino nybörjarefråga om Arrays

Postat: 15 mars 2016, 20:22:50
av Icecap
Kryptisk - båda jag och nej.

En array har ett antal element. Du har 3 arrays med 3 element i varje - men det kunde likaväl ha varit 1 array med 9 element i.
Om vi tar A, B & C som exempel:
int A[3];
int B[3];
int C[3];

Dessa innehåller tillsamman 9 platser varför man kunde göra:
int X[9];

A[0-2] kunde då motsvara X[0-2].
B[0-2] kunde då motsvara X[3-5].
C[0-2] kunde då motsvara X[6-8].

Och man kan faktisk göra detta från början - men nu blir det lite komplicerat.

Kod: Markera allt

struct union
  {
  struct
    {
    int A[3];
    int B[3];
    int C[3];
    }
  int X[9];
  } Z;
Detta skapar då ett gemensamt område där Z.X[] innehåller alla värden men man kan fortfarande komma åt A[], B[] & C[].

Z.A[0-2] motsvarar då även samma variabler som Z.X[0-2]
Z.B[0-2] motsvarar då även samma variabler som Z.X[3-5]
Z.C[0-2] motsvarar då även samma variabler som Z.X[6-8]

Med 'union' säger man alltså att minnesplatsen delas av de variabler som anges, alltså lägger du in ett värde i Z.A[2] läggs det värde in i Z.X[2] på samma gång då de delar platsen i minnet.

Re: Arduino nybörjarefråga om Arrays

Postat: 15 mars 2016, 20:26:56
av RadioDJ
Tack Icecap.
Ska ta och prova din variant.

Re: Arduino nybörjarefråga om Arrays

Postat: 15 mars 2016, 22:18:53
av adent
Kan du ge oss lite mer detaljer om vad du så att säga egentligen är ute efter så kan du kanske få en enklare lösning.

MVH: Mikael