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