Autorské riešenie
Riešenie tejto úlohy nie je náročné. Načo si musíme dať pozor je množstvo parametrov, ktoré potrebujeme brať do úvahy. Pri porovnávaní bicyklov sledujeme dve vlastnosti:
Aby sme dokázali tieto vlastnosti porovnať pre rôzne bicykle, predpokladáme pri porovnávaní rovnakú frekvenciu šliapania. Rozoberme si porovnanie oboch vlastností postupne. Ako rýchlo sa na bicykli dá ísť Ak sa zamyslíme nad porovnaním maximálnej rýchlosti u oboch bicyklov zistíme, že rýchlosť nevieme vypočítať. Nevieme totiž, aká je frekvencia šliapania. Preto predpokladáme, že frekvencia šliapania bude u oboch bicyklov rovnaká. Dôsledkom je, že stačí porovnať vzdialenosti, ktoré prejdú bicykle na jedno otočenie pedálmi. Bicykel ktorý prejde dlhšiu vzdialenosť pôjde rýchlejšie. Keďže chceme dosiahnuť maximálnu rýchlosť, musíme zvoliť také prevody, aby bicykel prešiel čo najväčšiu vzdialenosť. To dosiahneme vtedy, ak vpredu použijeme najväčšie a vzadu najmenšie ozubené koliesko (takýto prevod sa označuje ako ťažký). Označme si:
Ak pedálmi otočíme 1 krát, zadné koleso sa otočí vpredu_max / vzadu_min krát. Bicykel prejde vzdialenosť rovnú počtu otočení kolesa vynásobeného jeho obvodom: vpredu_max / vzadu_min * pi * priemer_kolesa. Bicykel, ktorý prejde väčšiu vzdialenosť môže ísť rýchlejšie. Aký strmý kopec sa dá vyšliapať. Podobne ako pri predchádzajúcej vlastnosti, ani tu nevieme porovnávanú vlastnosť vypočítať. Nevieme totiž, aká je frekvencia šliapania. Ale ani tu nám to vôbec nevadí. Stačí nám porovnať vzdialenosti, ktoré prejdú bicykle na jedno otočenie pedálmi. Bicykel ktorý prejde kratšiu vzdialenosť zvládne strmší kopec. Keďže chceme zvládnuť čo najstrmší kopec, musíme zvoliť také prevody, aby bicykel prešiel čo najmenšiu vzdialenosť. To dosiahneme vtedy, ak vpredu použijeme najmenšie a vzadu najväčšie ozubené koliesko (takýto prevod sa označuje ako ľahký). Označme si:
Ak pedálmi otočíme 1 krát, zadné koleso sa otočí vpredu_min / vzadu_max krát. Bicykel prejde vzdialenosť rovnú počtu otočení kolesa vynásobeného jeho obvodom: vpredu_min / vzadu_max * pi * priemer_kolesa. Bicykel, ktorý prejde menšiu vzdialenosť zvládne strmší kopec. Na novom bicykli by sme chceli chodiť aspoň tak rýchlo ako na starom a zároveň chceme zvládnuť aspoň tak strmé kopce ako na starom. Na novom bicykli by sme na najľahšom prevode mali ísť pomalšie alebo rovnako rýchlo ako na starom a na najťažšom prevode rovnako rýchlo alebo rýchlejšie ako na starom. Výsledné riešenie v Imagine logu môže vyzerať nasledovne: ;Imagine
logo viem porovnaj :stary_vpredu_max :stary_vpredu_min :stary_vzadu_max :stary_vzadu_min :stary_priemer_kolesa :novy_vpredu_max :novy_vpredu_min :novy_vzadu_max :novy_vzadu_min :novy_priemer_kolesa urobTu "stary_vzdialenost_na_sliapnutie_rychlo :stary_vpredu_max / :stary_vzadu_min * 3.14 * :stary_priemer_kolesa urobTu "stary_vzdialenost_na_sliapnutie_pomaly :stary_vpredu_min / :stary_vzadu_max * 3.14 * :stary_priemer_kolesa urobTu "novy_vzdialenost_na_sliapnutie_rychlo :novy_vpredu_max / :novy_vzadu_min * 3.14 * :novy_priemer_kolesa urobTu "novy_vzdialenost_na_sliapnutie_pomaly :novy_vpredu_min / :novy_vzadu_max * 3.14 * :novy_priemer_kolesa vysledok zaroven :novy_vzdialenost_na_sliapnutie_rychlo >= :stary_vzdialenost_na_sliapnutie_rychlo :novy_vzdialenost_na_sliapnutie_pomaly <= :stary_vzdialenost_na_sliapnutie_pomaly koniec Riešenie v Pythone môže vyzerať nasledovne: #Python import math def porovnaj(stary_vpredu_max, stary_vpredu_min, stary_vzadu_max, stary_vzadu_min, stary_priemer_kolesa, novy_vpredu_max, novy_vpredu_min, novy_vzadu_max, novy_vzadu_min, novy_priemer_kolesa): stary_vzdialenost_na_sliapnutie_rychlo = \ stary_vpredu_max / stary_vzadu_min * math.pi * stary_priemer_kolesa stary_vzdialenost_na_sliapnutie_pomaly = \ stary_vpredu_min / stary_vzadu_max * math.pi * stary_priemer_kolesa novy_vzdialenost_na_sliapnutie_rychlo = \ novy_vpredu_max / novy_vzadu_min * math.pi * novy_priemer_kolesa novy_vzdialenost_na_sliapnutie_pomaly = \ novy_vpredu_min / novy_vzadu_max * math.pi * novy_priemer_kolesa return novy_vzdialenost_na_sliapnutie_rychlo >= stary_vzdialenost_na_sliapnutie_rychlo \ and \ novy_vzdialenost_na_sliapnutie_pomaly <= stary_vzdialenost_na_sliapnutie_pomaly Pozornejší z vás si isto všimli, že sme nikde nespomenuli jednotky, v akých sa priemer kolies meria. To ani nie je podstatné. Ak priemer meriame v cm, prejdená vzdialenosť bude v cm. Ak priemer meriame v palcoch, prejdená vzdialenosť bude v palcoch. Pre samotné porovnanie to nie je dôležité. Dôležité je to, aby sme priemery kolies obidvoch porovnávaných bicyklov merali v rovnakých jednotkách. Vaše zaujímavé riešenia a najčastejšie chyby Pri tejto úlohe bolo častou chybou, že ste si neuvedomili, že vpredu aj vzadu môže byť viac ozubených kolies. Niektorí z vás uvažované parametre bicyklov vo funkcii/procedúre načítavali. Funkcia/procedúra by mala tieto hodnoty dostať v parametroch. Vysledok, ku ktorému sa funkcia/procedúra má dopracovať, by mala funkcia/procedúra vráiť. Výpis vo funkcii/procedúre nie je najlepšie riešenie. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |