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