Hodnocení DU bitové pole
Na co si dávat pozor
bitové pole neznámé délky se vytvoří jako pole prvků celočíselného typu (nejlépe ve struktuře společně s naalokovanou délkou). Toto pole se vytváří dynamicky na základě požadavku na počet bitů. Do jedné jednotky (proměnné) se vejde určitý počet bitů (např. do char (0-255) se vejde 8 bitů)
s bity by se mělo pracovat nad celočíselným bezznaménkovým typem (nejlépe intem)
maska by měla být stejného typu jako data na které se používá (nebo větší)
pro změnu bitu použít exclusive or
pro nulování použít negace masky ~
naalokované hodnoty je nutné odalokovat
strukturu předávat ukazatelem nebo referencí
test na přidělenou paměť
knihovní konstanty pro rozměry typu
alokace = pocet jednotek * sizeof
Výsledky
80526 90%
- test spíše delka > 0 než !delka
- inicializuj musí být napsáno tak, že nepředpokládá předchozí činnost, tj. mělo by být první volanou funkcí pro dané bitové pole (jinak by nemělo smysl init, uvolni, init) - test na NULL nemá smlysl (předpokládá předchozí nastavení)
- v malloc kolik*sizeof(char) (asi to sizeof většinou bude rovno jedné, ale co kdyby jednou ne)
- změna bitu lépe pomocí XOR
- pěkné
20776 85%
- ošetřit hlavičku proti vícenásobnému načtení
- "klasické" bitové pole zabere nejmenší jednotku - to znamená že na uložení bitu bude potřeba více bitů (jak píšete v main cpp) - není tedy funkce pro výběr byte a bite
- předává hodnotou
- používáte pouze neobjektové vylepšení C++ (objektové C++ je ještě daleko)
44448 90%
- ošetřit hlavičku proti vícenásobnému načtení
- pro rozměr typu použít knihovní konstanty
44544 75%
- strukturu předávat odkazem
- používat knihovní konstanty
- Create - nelze vrátit ukazatel na lokální proměnnou - zaniká
- rozložit do více souborů + hlavičky
- použít XOR
80486 70%
- není struktura definovaná v hlavičce
- nepoužívat globální proměnné
- bitové pole pomocí celočiselného pole
83056 75%
- strukturu předávat odkazem
- používat knihovní konstanty
- vytvorPole - nelze vrátit ukazatel na lokální proměnnou - zaniká
- použít XOR
83774 90%
- test spíše Len > 0 než !Len
- inicializuj musí být napsáno tak, že nepředpokládá předchozí činnost, tj. mělo by být první volanou funkcí pro dané bitové pole (jinak by nemělo smysl init, uvolni, init) - test na NULL nemá smysl (předpokládá předchozí nastavení)
- v malloc kolik*sizeof(char) (asi to sizeof většinou bude rovno jedné, ale co kdyby jednou ne)
- změna bitu lépe pomocí XOR
- pěkné
85563 95%
- u nuluj bit a nastav bit zadat číslo kterého (přes pozici pracné)
-
80505 90%
- odevzdal matice
NULL používat knihovní
používat knihovní proměnné
nejdříve free a potom = NULL, ne naopak
83619 40%
pozdní odevzdání -50%
používat knihovní proměnné
definy dávat do hlavičkového souboru ne do zdrojového
pro práci s bity je lépe používat unsigned celočíselné typy
Poslední úpravy – 2005-11-25