Autorské riešenie
[stiahni]

Keďže pre výpočet zľavy platia rovnaké pravidlá či už pri púpavovej müsli tyčinke alebo pri mrkvových cukríkoch, vytvorili sme procedúru cenaTovaru, ktorej parametrami sú cena tovaru a počet kusov, ktoré si zákazník chce kúpiť:

viem cenaTovaru :cenaKus :pocetKusov

  ak2 :pocetKusov <= 3 [
    vysledok :cenaKus * :pocetKusov
  ]
  [ ak2 :pocetKusov <= 8 [
      vysledok :cenaKus * (3 + (:pocetKusov-3)*0.8)
    ]
    [
      vysledok :cenaKus * (3 + 5*0.8 + (:pocetKusov-8)*0.5)
    ]
  ]

koniec

Namiesto globálnej premennej, do ktorej by sme ukladali výsledky našich výpočtov, sme použili príkaz vysledok. Tento príkaz zastaví beh procedúry cenaTovaru a vráti svoju hodnotu procedúre cena. Procedúra cena zavolá procedúru cenaTovaru najprv s hodnotami pre tyčinku a potom s hodnotami pre cukríky:

 

viem cena
 celkom'nechHodnota (cenaTovaru 5 pocetTyciniek) + (cenaTovaru 2.5 pocetCukrikov)
koniec  

Najčastejšie chyby, komentár k vašim riešeniam

Niektorí z vás si neprečítali pozorne zadanie úlohy. Zľava sa uplatňuje nie na celý nákup, ale na jeho jednotlivé kusy (pozrite si autorské riešenie).
Pri započítavaní zliav niektorí rátali s 80 %, iní s 20 % zľavou za štvrtý, piaty, šiesty, siedmy a ôsmy kus. Tento nedostatok sme akceptovali a body sme zaň neodobrali (keďže zadanie nebolo formulované celkom logicky, stiahnuť si môžete opravené zadanie).
V niektorých procedúrach sa objavilo množstvo pomocných premenných, podmienok - procedúra bola veľmi neprehľadná, neefektívna. Určite preto oceníte stručnosť a prehľadnosť autorského riešenia :-).