C while for..for....for

Jan Waclawek konfera na efton.sk
Pátek Leden 27 11:37:53 CET 2023


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.)
>
>wek




Další informace o konferenci Hw-list