Autorské riešenie
[stiahni]

Pre vypočítanie rozdielu medzi dvoma dátumami si pomôžeme pomôckou - obrázkom. Výsledný rozdiel určíme ako počet dní druhého dátumu a prvého dátumu od začiatku roka. T. j. (mesiac2 - 1 )x30 + deň2 a (mesiac1 - 1 )x30 + deň1. Dostaneme výsledok: (mesiac2 - 1 )x30 + deň2 - [(mesiac1 - 1 )x30 + deň1] = (mesiac2 - mesiac1)x30 + deň2 - deň1.

vypocet

Potom už veľmi ľahko doplníme do procedúry príkaz priradenia s uvedeným vzorcom a na konci príkaz vetvenia.

viem vypočítaj :den1 :mesiac1 :den2 :mesiac2
 ;vypočítaj 1 1 3 1
 urobTu "rozdiel (:mesiac2 - :mesiac1) * 30 + :den2 - :den1
 píš :rozdiel
 ak2 :rozdiel<=5 [píš "|smelo môžeš zjesť jogurt|]
                 [píš "|nejedz tento jogurt, je už po záruke|]
koniec

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

  • zložito písané riešenie,
  • odsadzovanie chýbalo,
  • zabudnutie na prípad, že by dátum výroby bol v rozsahu 26.-30. dňa  v danom mesiaci a dátum spotreby by bol 1.-5. dňa nasledujúceho mesiaca; v tomto prípade je jogurt čerstvý, ale program vypísal opak
  • dátum spotreby môže byť skorší ako dátum výroby aj v prípade, že mesiac  je ten istý, ale deň spotreby je skorší ako deň výroby, s touto možnosťou dotyčný nerátal,
  • niektorí brali, že jogurt je čerstvý iba po 4.deň od dátumu výroby,
  • program by ešte mohol overovať, či je zadaný dátum v správnom rozsahu  (0<deň<31 a 0<mesiac<31),
  • jeden žiak porovnával iba dni, vôbec nebral do úvahy mesiace,
  • zabudnutie na výpis výsledku pre prípad, že dátum spotreby je skorší  ako dátum výroby a teda, že jogurt s takýmto dátumom neexistuje
  • zbytočné vytváranie nových premenných
  • v prípade, že mesiac výroby < aktuálny mesiac, ste nesprávne určili podmienku. Váš program totiž považuje za čerstvý aj taký jogurt, ktorý má dátum výroby 27.10. a aktuálny dátum je 5.11.
  • v prípade, že jogurt nie je čerstvý, je potrebné to vypísať.
  • žiačka zabudla zahrnúť prípad presne 5. dňa od dátumu výroby
  • chýba výpis výsledku pre niektoré prípady.