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