Autorské riešenie
Pre výpočet plochy miestosti potrebujeme poznať jej dĺžku, šírku a výšku. Tieto tri rozmery sú naše vstupné parametre. Plochu stien miestností a stropu vypočítame podľa vzorca: Korytnačky majú na domoch štvorcové okná o veľkosti polovice plochy steny. Okno s takouto veľkosťou sa na stenu nemusí zmestiť. Preto si vytvoríme pomocnú fukciu, ktorá nám povie, či sa okno na stenu vojde. Parametre pre túto fukciu sú výška a dĺžka alebo šírka. Funkcia vypočíta plochu okna a jeho stranu. Ak je strana okna menšia ako výška alebo dĺžka, či širka, tak dostaneme kladnú odpoveď. #Python def je_okno(rozmer_steny, vyska): plocha_steny = rozmer_steny* vyska plocha_okna = plocha_steny / 2 strana_okna = math.sqrt(plocha_okna) return strana_okna <= rozmer_steny and strana_okna <= vyska Na jednej zo stien sú umiestnené dvere, ktoré sú vysoké až po strop a široké jednu štvrtinu z dĺžky steny. V ďalšom kroku overíme, či sa dvere vôjdu spolu s oknom na stenu. Ak je to možné, chceme, aby bolo okno na každej stene. Opať si vytvoríme pomocnú funckiu, ktorá nám povie, či na danú stenu vieme umiestniť okno aj dvere. #Python def je_okno_dvere(rozmer_steny,vyska): plocha_steny = rozmer_steny * vyska plocha_okna = plocha_steny / 2 strana_okna = math.sqrt(plocha_okna) stvrtina = rozmer_steny / 4 return strana_okna <= rozmer_steny - stvrtina and strana_okna <= vyska Vo funkcii plocha_nateru potrebujeme odpočítať od plochy stien plochu okien a dvier. Vieme, že v dome je, čo najväčší možný počet okien a ak poloha dverí neovplyvní počet okien, tak sú umiestnené na dlhšej stene. Máme niekoľko možností umiestnenia okien a dvier:
#Python def plocha_nateru(sirka, dlzka, vyska): plocha_steny_sirka_vyska = sirka * vyska plocha_steny_dlzka_vyska = dlzka * vyska plocha_strop = sirka*dlzka plocha_okien = 0 # zistíme, ktorá strana je dlhšia a podľa nej overujeme, kde budú dvere if dlzka > sirka: dlhsia_stena = dlzka kratstia_stena = sirka else: dlhsia_stena = sirka kratstia_stena = dlzka # dvere a okná su na dlhšej strane if je_okno_dvere(dlhsia_stena,vyska): plocha_dverí = vyska * (dlhsia_stena/4) plocha_okien = 2*(dlhsia_stena*vyska)/2 # okna sú aj na kratšej strane if je_okno(kratstia_stena,vyska): plocha_okien = plocha_okien + 2*((kratstia_stena*vyska)/2) # okná sú na dlhšej strane elif je_okno(dlhsia_stena,vyska): #dvere sú na kratšej strane plocha_dverí = vyska * (kratstia_stena/4) plocha_okien = 2*(dlhsia_stena*vyska)/2 # na kratšej strane sú aj okná if je_okno_dvere(kratstia_stena, vyska): plocha_okien = plocha_okien + 2* ((kratstia_stena * vyska) / 2) # k dverám sa okno nezmestí, aleokno je na protiľahlej kratšej strane if je_okno(kratstia_stena, vyska): plocha_okien = plocha_okien + (kratstia_stena * vyska) / 2 else: # dvere sú na dlhšej strane, okno sa nezmestí plocha_dverí = vyska * (dlhsia_stena/4) # okná sú na kratšej strane if je_okno(kratstia_stena, vyska): plocha_okien = plocha_okien + (2 * ((kratstia_stena * vyska)/2)) return (2 * plocha_steny_sirka_vyska + 2 * plocha_steny_dlzka_vyska + plocha_strop) -\ plocha_okien - plocha_dverí Vaše najčastejšie chyby a zaujímavé riešenia Medzi najčastejšie chyby patrilo neoverenie podmienok, či sa okno s polovičnou veľkosťou ako je plocha steny na stenu zmestí alebo či sa na stenu spolu s oknom zmestia aj dvere so štvrtinovou dĺzkou oproti dĺžke steny, na ktorej sú umiestnené. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |