Witam. Mam na uczelni do zrobienia zadanie ale prowadzący nie o końca potrafił mi wyjaśnić o co chodzi.
Wklejam treść, może ktoś miał styczność z czymś podobnym i mi pomoże. Chodzi o pkt 6. Resztę zrobiłem.
- TODO
- stworzyc typ danych bitowy (bitset) (tablica zero jedynek), ale
- tablicowy, czyli przechowujacy wiele wartosci i funkcje do oblsugi opisane
- w pliku bits.h
-
- zaimplementowac funkcje opisanych w pliku bits.h, gdzie jeden element
- tablicy (jeden bajt) odpowiada, za jedna wartosc.
-
- napisac funkcje wypisujace bitset zerojedynkowo (zeby sprawdzac czy bity
- ustawiono poprawnie)
-
- napisac test jednostkowy (gotowa funkcja assert z assert.h)
- sprawdzajaca poprawnosc funkcji. Dla ustawionych kilu bitow sprawdzic czy
- funkcja zwraca niezero dla tych bitow i zero dla pozostalych
-
- Dopisac nowy typ i funkcje, ktore bed¹ operowac juz na bitach (jeden
- bajt=8 wartosci) (nowe nazwy funkcji, typu)
-
- Przepisac funkcje, zeby byly makrami. Dla makr, które maj¹ zwracaj¹
- wartosc skorzystac z: http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
-
- (DLA CHETNYCH) Rozszerzyc typ oraz funkcje z zadania 4. tak by pamiec
- byla alokowana dynamicznie (tablica intow); dopisanie funkcji: void *
- bit_create(int n); ktora bedzie korzystala z wyimagonego, tylko jej
- wiadomego typu (tez jakas niejawna struktura rzutowana na void*). Dla
- otoczenia bedzie "(void*)" ktora bedzie zawierala limit wartosci a funkcje
- beda sprawdzaly czy limit nie zostal przekroczony.
- konieczne operatory i funkcje do wykonania zadania:
- & | ~: operatory bitowe (materialy do zajec #3)
- << >>: przesuniecia bitowe (materialy do zajec #3)
- assert: sprawdza czy argument nie jest zerem. Jesli jest konczy program
- podajac linie w ktorej program sie skonczyl
- (TYP): rzutowanie, zmiana typu (potrzebne do zad. 6)
- & *: uzyskanie adresu do zmiennej, zmiennej z adresu
*/
a tutaj bits.h
struct bit_set {
char tab[10];
};
void bits_set(struct bit_set * val, int n); // ustawienie n-tego bita na jeden
void bits_unset(struct bit_set * val, int n); // ustawienie n-tego bita na zero
int bits_isset(struct bit_set * val, int n); // sprawdzenie czy n-ty bit jest jedynka
int bits_count(struct bit_set * val); //sprawdzenie ile bitow jest jedynka
int bits_all(struct bit_set * val); //sprawdzenie czy wszystkie bity sa jedynka
int bits_any(struct bit_set * val); // sprawdzenie czy jakikolwiek bit jest jedynka
void bits_reset(struct bit_set * val); // ustawienie wszystkich bitow na 0
void bits_show(struct bit_set * val); // wyswietlanie