Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 2 / 2 = 100%

  • Úspešnosť riešenia:  4,5 / 5 = 90%

Správne riešenie vyžadovalo doplniť procedúru v Imagine, resp. funkciu v Pythone, ktorá na vstupe pracuje s počtom znakov, zoznamom obsahov jednotlivých obrázkov vo štvorcových centimetroch a s jednotkovou cenou za textovú a za grafickú normostranu. Aby sme vypočítali celkovú cenu za tlač knihy v eurách, bolo potrebné najprv zistiť, koľko normostrán nám tvorí textová informácia a koľko grafická informácia. Úlohu bolo možné riešiť viacerými spôsobmi. Mohli ste uvažovať riešenie, pri ktorom sa platí za celé normostrany, aj keď strana nie je celá zaplnená obsahom. Správne však bolo aj riešenie, ak ste na určenie počtu normostrán použili neceločíselné delenie dvoch prirodzených čísel. Pri určovaní počtu grafických normostrán bolo najprv potrebné spočítať všetky hodnoty v zozname obsahov obrázkov. Následne už len stačilo správne naformulovať podmienku, pri ktorej sa uplatní zľava.

Nasledujú možné riešenia v jazyku Imagine Logo a Python.

;Imagine logo
viem pocitaj :pocetZnakov :zoznam :cenaZaTextovuNormostranu :cenaZaGrafickuNormostranu
  urobTu "spoluGrafika 0
  prePrvky "cislo :zoznam [
     urobTu "spoluGrafika :spoluGrafika + :cislo
  ]

  urobTu "pocetTextovychNormostran :pocetZnakov/:rozsahTextovejNormostrany
  urobTu "pocetGrafickychNormostran :spoluGrafika / :rozsahGrafickejNormostrany
  urobTu "podielGrafickejInformacie :pocetGrafickychNormostran /
    (:pocetTextovychNormostran+:pocetGrafickychNormostran)

   urobTu "vyslednaCena 0

  ak2 :podielGrafickejInformacie >= 0.1
  [urobTu "vyslednaCena :pocetTextovychNormostran * :cenaZaTextovuNormostranu
    + :pocetGrafickychNormostran * :cenaZaGrafickuNormostranu * 0.95]
  [urobTu "vyslednaCena :pocetTextovychNormostran * :cenaZaTextovuNormostranu
    + :pocetGrafickychNormostran * :cenaZaGrafickuNormostranu]
  ; zaokruhlenie a prevod na eura
  urobTu "vyslednaCena cpodiel :vyslednaCena 1
  urobTu "vyslednaCena :vyslednaCena/100
  vysledok :vyslednaCena
koniec

 

#Python


def pocitaj(pocetZnakov,z,cenaZaTextovuNormostranu,cenaZaGrafickuNormostranu):
  '''
   :param údaje o knihe - počet znakov, zoznam obrázkov, jednotková cena za textovú a za grafickú normostranu v centoch
   :type int, list, int, int
   :return celková cena za tlač knihy v eurách
   :rtype: float
  '''

  spoluGrafika = 0
  for prvok in z:
      spoluGrafika += prvok
  pocetTextovychNormostran = pocetZnakov/rozsahTextovejNormostrany
  pocetGrafickychNormostran = spoluGrafika / rozsahGrafickejNormostrany
  podielGrafickejInformacie = pocetGrafickychNormostran / (pocetTextovychNormostran+pocetGrafickychNormostran)
  vyslednaCena = 0
  if podielGrafickejInformacie >= 0.1:
     vyslednaCena = pocetTextovychNormostran*cenaZaTextovuNormostranu + pocetGrafickychNormostran*cenaZaGrafickuNormostranu*0.95
  else:
     vyslednaCena = pocetTextovychNormostran*cenaZaTextovuNormostranu + pocetGrafickychNormostran*cenaZaGrafickuNormostranu
  vyslednaCena = vyslednaCena // 1
  vyslednaCena = vyslednaCena / 100
  return vyslednaCena

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

Oba tímy riešili úlohu v jazyku Python.

Objavila sa len jedna malá chyba pri určovaní podmienky pre zľavu. Naopak, potešila nás aj dobrovoľná kontrola veľkosti obrázkov a originálne spôsoby práce so zoznamom v Pythone.