Autorské riešenie
[stiahni]

Riešenie tejto úlohy, aj napriek tomu že pracujeme s množstvom údajov, nie je až také zložité. Najskôr musíme zistiť, ako odmerať cenu vykurovania pre jednotlivé palivá. Potom nám najnižšia z nich určí najvýhodnejšie palivo.

Pozrime sa najskôr na cenu vykurovania. Údaje, ktoré na ňu vplývajú sú (*):

  • cena za jednotkové množstvo paliva,

  • množstvo energie získané spálením jednotkového množstva paliva,

  • účinnosť kotla, ktoré palivo spaľuje.

Do celkovej ceny vykurovania by sme mali zahrnúť aj cenu kotla (ako počiatočnú, jednorazovú investíciu). Keďže sú však všetky kotle rovnako drahé, bude mať ich cena pri každom palive rovnaký vplyv na cenu vykurovania. Pri porovnaní výhodností jednotlivých palív ju teda nemusíme brať do úvahy.

V konečnom dôsledku nás bude zaujímať pomer množstva ceny ktorú sme zaplatili za palivo a energie, ktorú sme využili na kúrenie. Z celkovej energie, ktorú získame horením konkrétneho palivo, využijeme len časť. Akú veľkú to záleží od účinnosti kotla. Cenu za využitú energiu vypočítame nasledovne:

cena za využitú energiu =  cenaZaJednotkuPaliva
vyhrevnostZJednotkyPaliva * ucinnostKotla

 

Napr. Predajcovia palivového dreva ponúkajú drevo za cenu 55 €/prm. Výhrevnosť palivového dreva je 11000 MJ/prm. Účinnosť kotla na drevené palivo je približne 60 %. To znamená, že cena za využitú energiu z horenia dreva je:

cena za využitú energiu z dreva =  55 €/prm  = 0,0083 €/MJ
11000 MJ/prm * 60 %

Takto vieme vypočítať cenu vykurovania pre každý typ paliva. Najmenšia cena za vykurovanie nám určí najvýhodnejšie palivo.

Všetky potrebné údaje sú uvedené v textových políčkach pripraveného prostredia. Procedúra zistiNajvyhodnejsiePalivo by zatiaľ mohla vyzerať nasledovne:

viem zistiNajvyhodnejsiePalivo
  urobTu "drevo drevoCena / (drevoVyhrevnost * drevoUcinnostKotla / 100)
  urobTu "plyn plynCena / (plynVyhrevnost * plynUcinnostKotla / 100)
  urobTu "elektrina elektrinaCena / (elektrinaVyhrevnost * elektrinaUcinnostKotla / 100)
koniec

Ďalším krokom je zistiť, ktorá z premenných "drevo, "plyn a "elektrina má najmenšiu hodnotu. Musíme ich teda navzájom porovnať. Spravme to ale čo možno najšikovnejšie, na čo najmenší počet porovnaní. Pomôcť nám môže nasledujúci rozhodovací strom:

Ak prepíšeme tento rozhodovací strom do procedúry, dostaneme nasledujúci kód procedúry zistiNajvyhodnejsiePalivo:

viem zistiNajvyhodnejsiePalivo
  urobTu "drevo drevoCena / (drevoVyhrevnost * drevoUcinnostKotla)
  urobTu "plyn plynCena / (plynVyhrevnost * plynUcinnostKotla)
  urobTu "elektrina elektrinaCena / (elektrinaVyhrevnost * elektrinaUcinnostKotla)

  ak2 :drevo < :plyn [
    ak2 :drevo < :elektrina [
      urobTu "naj "drevo
    ][
      urobTu "naj "elektrina
    ]
  ][
    ak2 :plyn < :elektrina [
      urobTu "naj "plyn
    ][
      urobTu "naj "elektrina
    ]
  ]

  najVyhodnejsiePalivo'nechHodnota :naj
koniec

(*) Takýto jednoduchý prístup platí len v Korytnačkove. V skutočnosti by sme do takejto ceny mali započítať aj ceny kotlov, ktoré sú rôzne a počiatočné náklady na montáž kotla. Ďalej by sme do úvahy mali brať aj množstvo kúpeného paliva, pretože predajca zvyčajne poskytuje aj nejakú množstevnú zľavu. Nezanedbateľnú položku tvoria aj náklady na prevádzku a údržbu kotla, ako napr. opravy, kontroly a pod.

Vaše zaujímavé riešenia a najčastejšie chyby

Pri opravovaní tejto úlohy sme zistili zaujímavú vec. Väčšina z vás zisťovala množstvo získanej energie za dané peniaze a nie cenu získaného množstvo energie. Z výsledných hodnôt ste potom vyberali tú maximálnu a nie minimum ako my v autorskom riešení.

Častou chybou bolo chybné porovnávania hodnôt a určenie tej najvýhodnejšej. Pri úlohách tohto typu vám preto odporúčame si postup porovnávania ešte pred samotným programovaním zobraziť pomocou obrázka.