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.
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.
|