Übung aus C++ Primer (bitset)
-
Hier nochmal die Abschlussübung zu "bitset":
Betrachten Sie die Zahlenfolge 1,2,3,5,8,13,21. Initialisieren Sie ein bitset<32> Objekt, das ein Bit in jeder Position aufweist, die einer Zahl dieser Folge entspricht. Schreiben Sie alternativ ein kurzes Programm für ein leeres Bitset, das jedes der genannten Bits einschaltet.
Teil 1 der Aufgabenstellung verstehe ich einfach nicht, bei mir kann n bitset<32> bitvec = 1 // = 2; = 3; = 5...... sein, aber nicht irgendwie alles gleichzeitig. "In jeder Position...." ka...wie des gemeint ist.
Teil 2, da wäre hier mein Lösungsvorschlag:
#include <iostream> #include <string> #include <bitset> using std::cout; using std::endl; using std::bitset; int main() { bitset<32> bitvec; size_t last_on_bit = 21; size_t remember = 0; for(size_t i=1; i<=last_on_bit; i = i + remember ) // i=1 r=1; i=2 r=1+2=3; i=5 r=3+5=8;....... { bitvec.set(i); remember += i; bitvec.set(remember); } cout << bitvec << endl << endl; return 0; }1. Bitte bewerten/kritisieren

2. Ist dass mit dem "size_t" korrekt, weil in meinem Buch hab ich gelernt, dass ein "BitsetOjekt.size()" size_t zurück gibt, also Spreche ich auch die einzelnen Positionen bei "set(...)" mit size_t an? Oder hab ich da was falsch verstanden? Wie hättet ihr dass gemacht? (mit diesen ganzen Typen komm ich irgendwann mal noch total durcheinander...:))MfG
Stromberg
-
Bit 1: 00000000 00000000 00000000 00000001 Bit 2: 00000000 00000000 00000000 00000010 Bit 3: 00000000 00000000 00000000 00000100 Bit 5: 00000000 00000000 00000000 00010000 Bit 8: 00000000 00000000 00000000 10000000 Bit 13: 00000000 00000000 00010000 00000000 Bit 21: 00000000 00010000 00000000 00000000 Result: 00000000 00010000 00010000 10010111 -> 1052823std::bitset<32> bitvec(1052823ul);Und als Funktion würde ich das daher irgendwie so schreiben:
void do_that_thing(std::bitset<32>& bitset) { static std::bitset<32> const value(1052823ul); bitset.reset(); bitset |= value; }Sofern ich das richtig verstanden habe

Und wegen dem size_t und co, dafür gibt es Referenzen:
http://www.cplusplus.com/reference/stl/bitset/
bzw.
http://www.cplusplus.com/reference/stl/bitset/size.html
http://www.cplusplus.com/reference/stl/bitset/set.htmlMit der Zeit kennt man aber das wichtigste auswendig

Grüssli