Autorské rie¹enie
[stiahni imp : py]

  • Poèet rie¹iteµov: 6 / 7 = 86 %

  • Úspe¹nos» rie¹enia:   1,66 / 5 = 33 %

Rie¹enie úlohy je vhodné rozeli» na dve èasti: najprv je potrebné urèi» poèet radiátorov potrebných na vykurovanie celého bytu, potom vypoèíta» roèné náklady na vykurovanie bytu.

K tomu, aby sme vedeli urèi» poèet potrebných radiátorov, musíme pozna» rozmery jednotlivých miestností. Rozmery miestností je vhodné zada» ako parametre, keï¾e ka¾dá miestnos» má urèitú dµ¾ku, ¹írku a vý¹ku, parametre miestností mô¾eme zada» ako zoznam trojprvkových zoznamov napríklad takto: [[3 4 5][3 4 3] [3 4 25]]
Poèet miestností ani nemusíme zada», vyplýva to automaticky z poètu trojprvkových zoznamov miestností.

Pri výpoète poètu radiátorov prejdeme zoznamom miestností, kde pri ka¾dej miestnosti, vypoèítame jej obsah, ako obsah kvádra V = a x b x c. Ak poznáme obsah miestnosti, podµa korytnaèej normy zistíme poèet potrebných radiátorov pre danú miestnos». Keï¾e na ka¾dých zaèatých 60 m3  musí by» in¹talovaný jeden radiátor, staèí urèi» celoèíselným podielom koµkokrát je vo vypoèítanom objeme 60. Vykurova» v¹ak musíme aj v men¹ích miestnostiach, ako 60 m3, a taktie¾ na ka¾dých zaèatých 60 m3, preto podmienku je vhodné urèi» tak, ¾e testujeme zvy¹ok pri celoèíselnom delení objemu so 60. Ak existuje zvy¹ok, teda zvysok :objem 60 > 0, potom poèet radiátorov zvyý¹ime o 1 + pripoèítame poèet prislúchajúci na celé 60 m3.

Výsledok ulo¾íme pre ïaµ¹ie volanie v procedúre pre výpoèet roèných nákladov.

Imagine Logo

viem pocetRadiatorov :miestnosti
  urobTu "radiatory 0
  prePrvky "miestnost :miestnosti [
    urobTu "objem prvok 1 :miestnost * prvok 2 :miestnost * prvok 3 :miestnost
    ak2 zvysok :objem 60 > 0 [
      urobTu "radiatory :radiatory + 1 + cPodiel :objem 60
    ][
      urobTu "radiatory :radiatory + cPodiel :objem 60
    ]
  ]
vysledok :radiatory
koniec

Python

def pocetRadiatorov(miestnosti):
  radiatory = 0
   
for miestnost in miestnosti:
        objem = miestnost[0] * miestnost[1] * miestnost[2]
        if objem % 60 > 0:
            radiatory = radiatory + 1 + objem // 60
       
else:
            radiatory = radiatory + objem // 60
   
return radiatory

Keï u¾ vieme koµko radiátorov potrebujeme, podµa zadaných podmienok urèíme roèné náklady na vykurovanie daného bytu.

Ak podµa zadania vieme, ¾e vykurovacia sezóna trvá 140 dní a ka¾dý deò je radiátor zapnutý v priemere 14 hodín, poznáme aj cenu elektrickej energie za 1 kWh, staèí celkový èas, v na¹om prípade 140 dní x 14 hodín vynásoby» s aktuálnou cenou a s príkonom radiátora, a zistíme celkové náklady na vykurovanie na celú dobu vykurovacej sezóny.

Rie¹enie na výpoèet nákladov mô¾e vyzera» takto:

Imagine Logo

viem nakladyNaVykurovanie :miestnosti
;nakladyNaVykurovanie [[2 3 4] [6 5 3] [6 7 3]]

vysledok (pocetRadiatorov :miestnosti) * 2 * 140 * 14 * 0.0578
koniec

Python

def nakladyNaVykurovanie(miestnosti):
  return pocetRadiatorov(miestnosti) * 2 * 140 * 14 * 0.0578

miestnosti = [[3, 4, 5], [3, 4, 3], [3, 4, 6]]

print("Pocet radiatorov:", pocetRadiatorov(miestnosti))
print("Za spotrebu radiatorov treba zaplatit:", nakladyNaVykurovanie(miestnosti), "eur")

Ak by sme chceli vytvori» univerzálne rie¹enie pre µubovolnú vykurovaciu sezónu a µubovoµnú cenu elektrickej energie, aj tieto vstupné údaje by sa mohli naèítava» pomocou parametrov, a rie¹enie by mohlo vyzera» takto:

Imagine Logo

viem nakladyNaVykurovanie :miestnosti :prikon :dniVykurovacejSezony :pocetHodinVykurovania :cenaZaKilowatt
;nakladyNaVykurovanie [[3 4 5] [3 4 3] [3 4 25]] 2 140 14 0.0578

vysledok (pocetRadiatorov :miestnosti) * :prikon * :dniVykurovacejSezony * :pocetHodinVykurovania * :cenaZaKilowatt
koniec

Python

def nakladyNaVykurovanie(miestnosti, prikon, dniVykurovacejSezony, pocetHodinVykurovania, cenaZaKilowatt):
    return pocetRadiatorov(miestnosti) * prikon * dniVykurovacejSezony *    pocetHodinVykurovania * cenaZaKilowatt

miestnosti = [[3, 4, 5], [3, 4, 3], [3, 4, 25]]

print("Pocet radiatorov:", pocetRadiatorov(miestnosti))
print("Za spotrebu radiatorov treba zaplatit:", nakladyNaVykurovanie(miestnosti, 2, 140, 14, 0.0578), "eur")

Va¹e zaujímavé rie¹enia a najèastej¹ie chyby

V úlohe ste mali vypoèíta» objem a náklady pre byt, teda pre µubovoµný poèet miestností na základe zadaných rozmerov - najlep¹ie v zozname, ako zoznam trojprvkových zoznamov niekoµkých mestností.

Pri urèení poètu radiátorov treba uva¾ova» aj s ka¾dým zaèatým 60 m3 objemu, na to je vhodné pou¾i» funkciu zvysok, ako je to aj v zorovom rie¹ení uvedené. Niektorí ste to rie¹ili bez tejto funkcie, a matematicky ste sa dopracovali k správnemu výsledku, èo tie¾ je správne.

Viacerí ste sa venovali vytvoreniu u¾ívateµského rozhrania pre zadávanie vstupných hodnôt pomocou textového poµa, èo nebolo v zadaní. ®iaµ za to nemô¾eme da» body.

Najkraj¹ie a správne rie¹enie mal Super-Peter, ale aj on uva¾oval len s jednou miestnos»ou.