Hogyan kell egy tömb bizonyos elemeit átmásolni egy másik tömbbe C-ben?
kell egy i=0 változó, és mész végig az elemeken, ha olyat találsz ami megfelel a feltételeknek, akkor a másik tömb i. helyére beírod és i-t megnöveled eggyel
tehát az eredeti tömböt csak egyszer kell bejárni
Forras[index]
feltetelvizsgalat
cel[index]
Loop 9 do {
if (source[si] <> x) then {destination[di]; inc(di);}
inc(si);}
Van két tömböd, ehhez kell két index, amikkel az aktuális elemekre "mutatsz". Az eredeti tömbön egyszerűen végiglépkedsz az indexével, és megvizsgálod, megfelel-e a feltételnek, a ciklusmag végén növelve az indexét. Ha megfelel, akkor a másik tömb aktuális helyére beírod, és növeled azt az indexet is. (A második tömböt megfelelő méretűre kell venni, vagy menet közben ellenőrizni, hogy ne csorduljon túl!)
// nem C, csak vázlat
a1[...] // kiinduló adatok tömbje
a2[...] // cél tömb
idx1=0
idx2=0
ciklus amíg idx1 el nem éri az 'a1 mérete-1' -et (OR ugyanez idx2 és a2-vel)
__ha a1[idx1] megfelel, akkor
____a2[idx2] = a1[idx1]
____++idx2
__felt. vége
__++idx
ciklus vége
...
long idx1=0; // vagy long helyett inkább size_t
long idx2=0;
while (idx1 < a1_size)
{
if (...) a2[idx2++] = a1[idx1];
++idx1;
}
Itt van egy dinamikus tombos megoldas, remelem korrekt:
Elvart kimenet (paros szamokat atmasolja a destination tombbe a source tombbol, mindketto inteket tartalmaz):
Source:
Array's 0. element: 0
Array's 1. element: 1
Array's 2. element: 2
Array's 3. element: 3
Array's 4. element: 4
Array's 5. element: 5
Array's 6. element: 6
Array's 7. element: 7
Array's 8. element: 8
Array's 9. element: 9
Destination:
Array's 0. element: 0
Array's 1. element: 2
Array's 2. element: 4
Array's 3. element: 6
Array's 4. element: 8
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!