C while for..for....for
Jan Waclawek
konfera na efton.sk
Pátek Leden 27 10:50:35 CET 2023
No tak toto by som chcel vidiet zalgorimizovane...
Tipujem, ze v pripade 4 prakticky vyrabanych ozubenych kolies bude ten
brute force efektivnejsi.
wek
----- Original Message ---------------
Subject: Re: C while for..for....for
From: Miroslav Mraz <mrazik na volny.cz>
Date: Fri, 27 Jan 2023 10:02:34 +0100
To: hw-list na list.hw.cz
>To není nejlep±í příklad. Jdete hrubou silou na něco, co jde udělat i
>jinak. Ve své podstatě hledáte nejlep±í aproximaci reálného čísla číslem
>racionálním - zlomkem. Na to existuje metoda řetězového zlomku, z níµ
>vycházejí postupně lep±í a lep±í aproximace, ale čitatel i jmenovatel se
>postupně zvět±uje. Pokud tato čísla rozloµíte na součin prvočísel,
>vidíte jak je nejlépe seskupit tak, aby vám to dalo rozumné počty zubů.
>Na rozdíl od hrubého násilí vidíte víc přijatelných výsledků, ze kterých
>si pak vyberete ten pro vás nejrozumněj±í.
>
>Ale zpět k původnímu dotazu. Někdy bývá lep±í převést cyklus na rekurzi.
>Kód můµe pak být o hodně krat±í, i kdyµ o přehlednosti by bylo moµné
>diskutovat. Já osobně se v tom obvykle stejně zamotám, ale jsou úlohy
>(např. ře±ení sudoku), kde se to fakt hodí. Pokud je rekurze dělána
>rozumně (tail recursion), překladač si to interně stejně předělá na
>cyklus. MISRA ov±em rekurzi také zakazuje - můµe vyčerpat zásobník.
>
>Mrazík
>
>On 26. 01. 23 23:28, Ale± Procháska wrote:
>> Přehlednost kódu pro případné dal±í úpravy je myslím skoro stejně důleµitá jako správnost a kdyµ rozstrkám do funkcí to, co přirozeně nevyjadřuje nějakou my±lenku, přehlednosti moc nepomůµu. Zcela konkrétní příklad (reálně naprogramovaný a taky s goto): najít čtveřici ozubených kol, která budou realizovat určitý převod. Je to komplikované tím, µe se vyrábějí pouze kola s celočíselným počtem zubů, takµe se musí zkusmo procházet ve čtyřech vnořených cyklech aµ se trefím. Pak goto za konec vněj±ího cyklu a mám čtyři indexy označující čtyři hledaná kola. Kdybych na to psal nějakou ad hoc funkci kterou uµ v programu nikde jinde nepouµiju, tak musím taky vyře±it, jak vrátit čtveřici čísel. Čili nějaký struct nebo co, je±tě ta funkce a z pár řádků jsou dvě obrazovky a tu±ené nadávky někoho (mě samého za rok) kdo se bude snaµit pochopit co to vlastně dělá. Kdybych uµ v tom nutně musel hledat hnidy, tak bych se začal naváµet do samotného céčka, proč řídicí proměnné cyklu for existují i mim
o tělo cyklu a proč tam není pojmenovaný exit z cyklu :-)
>>
>> Ale± Procháska
>>
Další informace o konferenci Hw-list