# HG changeset patch # User Masataka Kohagura # Date 1445852179 -32400 # Node ID 9a1bb8f439f5a191f8714aa5ca9e409ae690c0dc # Parent 912d7bd51f385691963668132c5643b35fb0a733 fix (not correct running) diff -r 912d7bd51f38 -r 9a1bb8f439f5 c/bitVector/main.cc --- a/c/bitVector/main.cc Fri Oct 23 18:53:46 2015 +0900 +++ b/c/bitVector/main.cc Mon Oct 26 18:36:19 2015 +0900 @@ -3,18 +3,37 @@ #include #include "bitInfo.h" +void bitPrint(BitInfoPtr bi); + int bitBlock = sizeof(unsigned long) * 8; -void bitSet(BitInfoPtr bi, int bitSetPosition) { +BitInfoPtr bitSet(int bitSetPosition) { + + BitInfoPtr bi = (BitInfoPtr)malloc(sizeof(BitInfo)); + + bi->arrayNum = (bitSetPosition + 1) / bitBlock; + if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; + printf("Array Num : %d\n",bi->arrayNum); + + unsigned long bitContainer[bi->arrayNum]; + for (int i = 0; i < bi->arrayNum; i++) { + bitContainer[i] = 0; + } unsigned long tmp = 1; int arrayPosition = 0; arrayPosition = bitSetPosition / bitBlock; bitSetPosition = bitSetPosition % bitBlock; + + bi->bitContainer = bitContainer; tmp = tmp << (bitBlock - 1 - bitSetPosition); bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; + + bitPrint(bi); + + return bi; } void bitPrint(BitInfoPtr bi) { @@ -29,7 +48,6 @@ int main(int argc, char **argv) { - BitInfoPtr bi = (BitInfoPtr)malloc(sizeof(BitInfo)); int bitSetPosition = 0; for (int i = 1; i < argc ; i++) { @@ -38,18 +56,7 @@ } } - bi->arrayNum = (bitSetPosition + 1) / bitBlock; - if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; - - printf("Array Num : %d\n",bi->arrayNum); - - unsigned long bitContainer[bi->arrayNum]; - for (int i = 0; i < bi->arrayNum; i++) { - bitContainer[i] = 0; - } - - bi->bitContainer = bitContainer; - bitSet(bi,bitSetPosition); + BitInfoPtr bi = bitSet(bitSetPosition); bitPrint(bi); return 0; }