Nejčastější a nejvážnější chyby v zadání
Nastavte si svn pomocí nových nastavení (viz nastavení svn). Svn je nyní nastavena tak, aby vyžadovala komentář commitu a odmítala zakázané typy souborů. Je nutné provést po korekci nový commit.
Opravené zadání je v části branches/opravene_zadani. Je potřebné pomocí volby svn/merge (na složce trunk) verze spojit - Reintegrate branch. Tato verze by se měla stát výchozím bodem pro další tvorbu zadání (pro výslednou dokumentaci, zadání se ještě bude měnit podle skutečné realizace).
dodržujte požadované názvy souborů a adresářů. V hlavičce dokumentace uvádějte své školní e-maily.
Todo a note by se v zadání již neměly objevovat. Bug(fixy) v zadání ponechte.
Je potřebné změnit i hlavní název projektu v horní části dokumentace (mění se v doxy konfiguračním souboru).
Úvodní část stránky zadání se neměla mazat, je součástí zadání a mělo se zde vyznačit, pro které další typy k řešení jste se rozhodli.
Třída CBNode je vytvářena nad čtyřmi typy (bool, TWeekDay a dva zvolené) a každý z nich je v příslušném jmenném prostoru
vypuštěné body zadání je nutné doplnit a vypracovat. I když v hodnocení není výslovně uvedeno, je třeba přečíst a splnit všechny body zadání, počty metod ....
Pro připomínky k zadání byl zvolen přepínač \bug, který je v dokumentaci zvýrazněn a všechny takto označené položky jsou také zobrazeny na zvláštní stránce - buglist. Za značkou následuje [zad], které již není značkou ale již textem - poznámkou, že tato chyba vznikla při opravě zadání.
Postup opravy chyby je následující. Nejprve je nutné opravit vlastní chybu - v zadání nejčastěji dopsat správný text, u zdrojových kódu najít správné řešení. Následně se za text popisující bug doplní že byl opraven u zdrojových kódu vysvětlit v čem byl problém. Nakonec změním značku \bug na \bugfix, i tento má nastavenu svou zvláštní stránku v dokumentaci, takže je možné se podívat jaké byly problémy a jak se řešily. I bugfix zůstává v textu.
V projektu bylo zvoleno automatické číslování odstavců (číslo a za ním tečka). Bohužel toto není možné kombinovat se značkami \bug ... Proto je vhodnější (zde nutné) změnit číslování na "ruční" - například číslo a ).
Měl by se precizněji provést popis návrhu včetně jednoduchého popisu implementace. Například sčítání, odečítání a násobení front jsou operace různě interpretovatelné a proto je dobré je popsat (je také nutné si uvědomit, že k hodnotám prvků seznamu nemá kontejner přístup).
Zadání by mělo být definováno „laicky“ (tj. bez detailních návazností na C++), ale přitom jako požadavek na vytvoření třídy (žádané po někom jiném). Proto by zde měly být popsány činnosti metod a operátorů konkrétněji. Nemělo by se zde objevovat „bude dělat například ... nebo ... nebo ...“
měly by se objevit metody, které k "typu" logicky patří - Push, Pop, Top, Front, u pole operator[] ...
Název třídy by měl být krátký (aby se dobře psal) ale zároveň srozumitelný).
Znovu přepočítejte zda dosahujete požadovaných počtů metod (nejčastěji nesplňujete unární operátory, konstruktory a operátory). Nesplněné požadavky na počet v odevzdaném souboru zadání nejsou rozhodující, důležité je jaké požadavky byly v původní šabloně zadání.
Nelze použít neexistující operátory (ty které neznáme například pro int, neexistuje operátor $, @ …). U přetížení operátorů nelze měnit počet parametrů a prioritu. U nečlenského operátoru je nutné specifikovat typ návratové hodnoty.
v zadáních jsou vidět jisté „školy“ (= „rodiny“ přibližně stejných textů) – snažte se pracovat samostatně – kopie budou penalizovány (a nic se nenaučíte)
kombinace aaa.metoda, Funkce(aaa), které dělají totéž, jsou zamýšleny tak, aby jste si všimli rozdílu mezi voláním metody a funkce a mezi vrácením hodnoty odkazem (u metody (proč to jde?)) a hodnotou (u funkce, co se při tom děje (proč to nejde odkazem?))). Obojí by mělo vrátit prvek stejného typu jako je prvek, který tyto vyvolal (aaa).
Konstruktorem z řetězce (stringu) je myšlen klasický řetězec C (char *, neboli pole znaků ukončené znakem ´\0´). Pro zpracování řetězce napište vlastní algoritmy, ve kterých použijete xscanf, xtoa, atox – nepoužívejte pro zpracování řetězce jiné knihovní funkce). Řetězec by měl sloužit k tisku a zadávání „pochopitelnému“ pro člověka. Proto by jeho formátování mělo být takové aby se v něm člověk snadno orientoval.
V projektu bude použito dědění (viz CBNode), dynamických proměnných (základ vázaných seznamů) a výjimek (například alokace paměti, CBNode).
Poslední úpravy 2012-11-08