Autorsk rieenie
[stiahni imp : py]

  • Poet rieiteov: 6 / 7 = 86 %

  • spenos rieenia:   1,66 / 5 = 33 %

Rieenie lohy je vhodn rozeli na dve asti: najprv je potrebn uri poet raditorov potrebnch na vykurovanie celho bytu, potom vypota ron nklady na vykurovanie bytu.

K tomu, aby sme vedeli uri poet potrebnch raditorov, musme pozna rozmery jednotlivch miestnost. Rozmery miestnost je vhodn zada ako parametre, kee kad miestnos m urit dku, rku a vku, parametre miestnost meme zada ako zoznam trojprvkovch zoznamov naprklad takto: [[3 4 5][3 4 3] [3 4 25]]
Poet miestnost ani nemusme zada, vyplva to automaticky z potu trojprvkovch zoznamov miestnost.

Pri vpote potu raditorov prejdeme zoznamom miestnost, kde pri kadej miestnosti, vypotame jej obsah, ako obsah kvdra V = a x b x c. Ak poznme obsah miestnosti, poda korytnaej normy zistme poet potrebnch raditorov pre dan miestnos. Kee na kadch zaatch 60 m3  mus by intalovan jeden raditor, sta uri celoselnm podielom kokokrt je vo vypotanom objeme 60. Vykurova vak musme aj v mench miestnostiach, ako 60 m3, a taktie na kadch zaatch 60 m3, preto podmienku je vhodn uri tak, e testujeme zvyok pri celoselnom delen objemu so 60. Ak existuje zvyok, teda zvysok :objem 60 > 0, potom poet raditorov zvyime o 1 + pripotame poet prislchajci na cel 60 m3.

Vsledok ulome pre aie volanie v procedre pre vpoet ronch nkladov.

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 koko raditorov potrebujeme, poda zadanch podmienok urme ron nklady na vykurovanie danho bytu.

Ak poda zadania vieme, e vykurovacia sezna trv 140 dn a kad de je raditor zapnut v priemere 14 hodn, poznme aj cenu elektrickej energie za 1 kWh, sta celkov as, v naom prpade 140 dn x 14 hodn vynsoby s aktulnou cenou a s prkonom raditora, a zistme celkov nklady na vykurovanie na cel dobu vykurovacej sezny.

Rieenie na vpoet nkladov me 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 univerzlne rieenie pre ubovoln vykurovaciu seznu a ubovon cenu elektrickej energie, aj tieto vstupn daje by sa mohli natava pomocou parametrov, a rieenie 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")

Vae zaujmav rieenia a najastejie chyby

V lohe ste mali vypota objem a nklady pre byt, teda pre ubovon poet miestnost na zklade zadanch rozmerov - najlepie v zozname, ako zoznam trojprvkovch zoznamov niekokch mestnost.

Pri uren potu raditorov treba uvaova aj s kadm zaatm 60 m3 objemu, na to je vhodn poui funkciu zvysok, ako je to aj v zorovom rieen uveden. Niektor ste to rieili bez tejto funkcie, a matematicky ste sa dopracovali k sprvnemu vsledku, o tie je sprvne.

Viacer ste sa venovali vytvoreniu uvateskho rozhrania pre zadvanie vstupnch hodnt pomocou textovho poa, o nebolo v zadan. ia za to nememe da body.

Najkrajie a sprvne rieenie mal Super-Peter, ale aj on uvaoval len s jednou miestnosou.