C while for..for....for
Pavel Hudeček
edizon na seznam.cz
Pátek Leden 27 13:58:01 CET 2023
Tohle řešení přístupu k více rozměrům přes jeden index občas používám,
typicky teda pro obrazová data v jednorozměrném poli. Tady bych asi na
ten řádek "if (test(" doplnil // komentář. Pak už bych to řadil mezi
nejlepší zde zmínená řešení.
PH
Dne 27.01.2023 v 11:37 Jan Waclawek napsal(a):
> Bez continue, so zachovanim myslienky "prechadzam vsetkymi stavmi" (a s
> nabehom na parametrizovatelny pocet ozubenych kolies):
>
> n = 0;
> maxij = maxi * maxj; maxijk = maxij * maxk;
> for (n = 0; n < (maxijk * maxl); n++) {
> if (test(
> (n / 1) % maxi,
> (n / maxi) % maxj,
> (n / maxij) % maxk,
> (n / maxijk) // % maxl
> )) break; // hotovo
> }
>
> wek
>
> ----- Original Message ---------------
>
> Subject: RE: C while for..for....for
> From: Aleą Procháska <ales.prochaska na divesoft.com>
> Date: Fri, 27 Jan 2023 10:25:24 +0000
> To: HW-news <hw-list na list.hw.cz>
>
>> Continue je takové malé skrytě propaąované goto, tady navíc směrem zpátky, to by mě asi trápilo. Podle mě odůvodněné goto ano, ale jenom dopředu, aby nemohl vzniknout cyklus.
>>
>> Aleą Procháska
>>
>> -----Original Message-----
>> From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Jan Waclawek
>> Sent: Friday, 27 January, 2023 11:20
>> To: HW-news <hw-list na list.hw.cz>
>> Subject: RE: C while for..for....for
>>
>> Riesenie je mnoho a zavisi od okolnosti. Niekedy sa taketo nieco da prepisat do jedineho cyklu ("prechadzajuc vsetkymi stavmi, kontrolujem toto a hento"), napr. pre tej jednoduchy pripad "ozubenych kolies" nieco ako
>>
>> i = 0; j = 0; k = 0; l = 0;
>> while(1) {
>> if (test(i, j, k, l)) break; // hotovo
>> i++; if (i < maxi) continue; i = 0;
>> j++; if (j < maxj) continue; j = 0;
>> k++; if (k < maxk) continue; k = 0;
>> l++; if (l < maxl) continue; break; // koniec }
>>
>> (... co samozrejme priamociaro vedie k tomu, ze indexy sa daju do pola a cele sa to zovseobecni pre N ozubenych kolies... atd.)
Další informace o konferenci Hw-list