C while for..for....for

Pavel Hudeček edizon na seznam.cz
Pátek Leden 27 14:43:55 CET 2023


To je samozřejmě typický místo, kde se musí pro jisttotu napsat i koment 
proč to tak je.
V podstatě všechna nepřímočará řešení vyžadují přiměřené komenty a 
samozřejmě by se měly používat jen když je to nezbytně nutné.

Tedy např. z hlediska diskutovaného problému bych viděl pořadí:
1. vnořené cykly a za každým cyklem nějaké if i<počet break;
2. při větším počtu vnoření return
3. když se nehodí return tak jedna řídící proměnná a něco na způsob if 
(++něco ... continue;
4. když se ani to nehodí, tak jedna řídící proměnná a %
5. když nejde ani to, tak goto

Přičemž 3/4 se můžou prohodit při menším počtu vnoření.
Nebo taky může být první volba to, co je v projektu z jiných důvodů již 
několikrát použito, takže se nebude zavádět další konstrukce.

PH

Dne 27.01.2023 v 14:08 Ladislav Vaiz napsal(a):
> Jen do doby, než to někdo po 5 letech otevře a začne se ptát třeba: "A 
> proč je to %maxl zakomentované? Nemělo by se odkomentovat? A co to 
> vlastně celé dělá?"
> Ještě existuje C obfuscated contest? Tam by to patřilo.
> L.
>
> On 27.01.2023 13:58, Pavel Hudeček wrote:
>> 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
>>> }


Další informace o konferenci Hw-list