Autorské riešenie
Riešenie tejto úlohy nie je ťažké. Aby sme sa však nepomýli je vhodné sa zamyslieť nad tým, aké rôzne situácie môžu nastať. Predpokladajme takýto záznam filmu s nasledovným pomerom strán: Vo všeobecnosti môžu nastať nasledovné prípady:
Niektorí sa možno zamyslia nad tým, či treba uvažovať aj o tom, či sa má záznam zväčšiť ak je príliš malý alebo naopak zmenšiť ak je príliš veľký. A čo v prípade ak rozmer záznamu je zhodný s rozmerom obrazovky televízora? Odpoveď na prvú otázku: Vždy jeden rozmer záznamu zmeníme tak, aby zodpovedal niektorému rozmeru obrazovky televízora (všimnite si to na obrázku vyššie). To znamená, že ho môžeme zväčšiť alebo aj zmenšiť. Druhý rozmer zmeníme tak, aby vzájomný pomer strán ostal zachovaný. Tým sme ale odpovedali aj na druhú otázku. Ak sa rozmery záznamu a obrazovky televízora budú zhodovať, prispôsobenie jednej strany záznamu veľkosti jednej strany televízora nespôsobí žiadnu zmenu. Rovnako aj druhú stranu potom zmeníme v pomere 1:1 (teda, tiež ostane rovnaká). Ostáva už len vymyslieť, kedy ktorú stranu záznamu nastaviť na niektorý z rozmerov obrazovky televízora a ako druhú stranu zmeniť tak, aby sa pomer strán záznamu zachoval. Pozrime sa najskôr na prípad, ak chceme záznam zobraziť celý (1, 2). Ak je pomer šírky a výšky záznamu väčší ako pomer šírky a výšky televízora (1), tak nová šírka záznamu je rovnaká ako šírka obrazovky televízora. Novú výšku dopočítame. V opačnom prípade (2) nastavíme novú výšku záznamu na výšku obrazovky televízora a šírku záznamu dopočítame.
Len pre istotu, skontroljte ako sa zmenil pomer výšky a šírky záznamu? Podobne budeme postupovať aj v prípade, ak chceme využiť celú plochu obrazovky televízora.
Zodpovedajúce procedúry môžu teda vyzerať nasledovne: viem celyZaznam viem celaObrazovka Niektorí si možno všimli, že aj keď sú prípady (2) a (3) rozdielne, zmenu rozmerov záznamu vykonáme v oboch prípadoch rovnako. Rovnako sú na tom aj prípady (1) a (4). Mohlo by byť teda výhodnejšie tento kód nepísať dva krát ale len raz, napr. v nejakých pomocných procedúrach. Celý program by potom mohol vyzerať nasledovne: viem celyZaznam viem celaObrazovkaviem celaObrazovka viem prisposobSirku viem prisposobVysku Vaše zaujímavé riešenia a najčastejšie chyby Vačšina z vás vyriešila túto úlohu správne. Vaše riešenia boli o niečo komplikovanejšie než autorské riešenie. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |