Laborvezetőknek
Szerdáig továbbra is a (logikailag) első hat előadás laborkártyái közül válogatva kérdezzük végig a hallgatóságot! Arra külön figyeljünk, hogy aki nem tudott egy kártyát, az mindenképpen kapjon a következő laboron is! Innentől a laborokon a fő feladat a hallgatók egyéni védése, de ahogy az idő engedi, illetve az önállóan vadászók számára lejjebb a szokásos módon kínáljuk a tematikát.
Hallgatóknak
Nagyon hatékony előre készülni a laborra, sokan és sok trófeát szereznek így! Viszont immár a főtéma: szezonja van a teljesítés egyik szükséges feltétele megvédésének. A C++ megoldás választását javaslom! Ezt támogatandó egy minimális (de a beszámoló szempontjából teljes) felkommentezett változat elérhető korábbi Együtt támadjuk meg című posztunkban. Ugyanitt találjátok a "mintát", amire lehet tesztelni a saját megoldásokat.
Tematika
Az alábbi témák legtöbbjét próbáljuk lefedni a "10/11" gyakorlaton:
- teszteljük (humán genom 2. kromoszóma leránt, átszab stb.) a az Együtt támadjuk meg című poszt megoldását!
- Végezzünk módosításokat az Együtt támadjuk meg című poszt megoldásában!
BN laborján
- Ha bérkinek kérdése van (a közelgő védése kapcsán is persze) a Együtt támadjuk meg forrásával kapcsolatban, azt válaszoljuk meg.
- Tegyük lehetővé, hogy a felépített LZW fának ne kelljen explicite a szabadit() üzenetet küldeni, hogy a szabad tárban allokált területeket felszabadítsuk (első kettőnek 1 trófea; tk. a fa destruktorába tegyük a szabadítás megfelelő hívását)!
- "Kivételkezeléssel" javítsuk a kódot az állománykezelés tekintetében: egy trófeáért az első két hallgató észreveheti, ha a bemenő fájl nem létezik:
nbatfai@hallg:~$ g++ z3a2.cpp -o z3a2
sima if és adjunk vissza -3 értéket az oprendszernek (help: B&L 86. o.).
nbatfai@hallg:~$ ./z3a2 z3a2.cp -o kimenet
z3a2.cp nem letezik...
Usage: lzwtree in_file -o out_fil - már nem az elején vagyunk, az ide-oda történő "bit-tologatást" egyszerűsítsük:
while (beFile.read ((char *) &b, sizeof (unsigned char))) { // egyszerűen a korábbi d.c kódját bemásoljuk // laboron többször lerajzoltuk ezt a bit-tologatást: // a b-ben lévő bájt bitjeit egyenként megnézzük for (int i = 0; i < 8; ++i) { // maszkolunk eddig..., most már simán írjuk az if fejébe a legmagasabb helyiértékű bit vizsgálatát // csupa 0 lesz benne a végén pedig a vizsgált 0 vagy 1, az if megmondja melyik: if (b & 0x80) // ha a vizsgált bit 1, akkor az '1' betűt nyomjuk az LZW fa objektumunkba binFa << '1'; else // különben meg a '0' betűt: binFa << '0'; b <<= 1; } }