Egy 0-ból és 1-ból álló tömbben, hogy tudnám megszámolni, hogy melyikből mennyi van?
A bonyolítás az lenne benne, hogy:
0-val kezdődik a tömb, és amikor az első 1-est megkapom, utána meg kellene számoljam, hogy hány darab egyes követi egymást a következő 0-ig.
Ha az egyesek száma egy konkrét intervallum közt van, akkor kellene csinálni vele valamit..
Az 1-ek és 0-k folyama igazából egy digitális jel.
Pedig #1-nek igaza van. Bejárod a tömböt. Minden alkalommal mikor találsz egy felfutó élt, elkezdesz növelni egy számlálót addig amíg nem találsz lefutó élt. Ha megvan a lefutó él, a számlálóval eldöntöd hogy mit csinálj, majd kezded újra az egészet. Gyakorlatilag egy minimális állapotgéppel meg lehet egyszerűen oldani.
enum Edge {
. . RISING;
. . FALLING;
};
Edge prev_edge = FALLING;
unsigned bit_cnt = 0;
for (int i = 0; i < data_length; i++) {
. . bool bit = data[i];
. . if (bit) {
. . . . bit_cnt++;
. . . . prev_edge = RISING;
. . } else if (prev_edge == RISING) {
/* itt megnézed hogy bit_cnt beleesik e az intervallumba és csinálsz valamit, mert lefutó élt találtunk és a bit_cnt tárolja azt hogy hány folytonos 1-es volt az előző felfutó él óta */
. . . . bit_cnt = 0;
. . . . prev_edge = FALLING;
. . }
}
Ha nem ez a kérdésed, akkor rosszul fogalmaztad meg. Fogalmazd át.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!