In meiner C-Klasse waren wir einen Auftrag gegeben:mit Bit-Felder als Darstellung für ganze Zahlen in c
schreiben ein interaktives Programm (Standard Input/Output). Definieren Sie den neuen Typ
set
unter Verwendung vontypedef
, der einen Satz Ganzzahlen im Bereich 0-127 enthalten kann. Die Datenstruktur muss hinsichtlich der Speicherung möglichst effizient sein (Hinweis: Arbeiten mit Bits). Außerdem müssen Sie 6 globale Variablen A, B, C, D, E, F vom Typset
definieren. Alle Operationen an Sätzen im Programm werden auf diesen 6 Variablen ausgeführt.Dieser Befehl
read_set A,5,6,7,4,5,4,-1
liest die Eingabe von Ganzzahlen durch den Benutzer, während-1
das Ende der Benutzereingabe bedeutet. Andere Befehle, die ein Benutzer verwenden kann:print_set A
- druckt den Satz in aufsteigender Reihenfolge,union_set A,B,C
macht Union on 2 und speichert die Ausgabe in einem dritten Satz,intersect_set A,B,C
- bestimmt den Schnittpunkt von 2 Sätzen und speichert die Ausgabe in einem dritten Satz.
Soweit ich verstehe, muss ich Bit-Felder verwenden. Ich könnte eine Tabelle mit Ganzzahlen von 0-127 erstellen. Dann könnte ich die 6 Variablen A,B,C,D,E,F
mit set
Typdefinition erstellen und 128 Bit-Felder für jede Variable geben. Wenn dann ein Benutzer 15
eingibt, würde ich das Bit einschalten, das 15 im Datentyp darstellt. Ich bin mir wirklich nicht sicher, ob das so ist, weil mir nicht klar ist, wie ich Bit-Felder so anordnen würde, dass ich bei Bedarf genau 15-Bit anschalten kann, müsste ich irgendwie eine ganze Zahl umwandeln Bitfeldname ... Auch print_set
druckt das Set in aufsteigender Reihenfolge, also wie könnte ich Bitfelder dafür neu anordnen?
Ich hoffe wirklich, Sie haben ein paar Ideen.
Forschung 'CHAR_BIT'. –