Mercurial > hg > Applications > Grep
comparison c/bitVector/main.cc @ 92:9a1bb8f439f5
fix (not correct running)
author | Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 26 Oct 2015 18:36:19 +0900 |
parents | 3d1c71fbd4a4 |
children | 23e796173c91 |
comparison
equal
deleted
inserted
replaced
91:912d7bd51f38 | 92:9a1bb8f439f5 |
---|---|
1 #include <stdio.h> | 1 #include <stdio.h> |
2 #include <stdlib.h> | 2 #include <stdlib.h> |
3 #include <string.h> | 3 #include <string.h> |
4 #include "bitInfo.h" | 4 #include "bitInfo.h" |
5 | 5 |
6 void bitPrint(BitInfoPtr bi); | |
7 | |
6 int bitBlock = sizeof(unsigned long) * 8; | 8 int bitBlock = sizeof(unsigned long) * 8; |
7 | 9 |
8 void bitSet(BitInfoPtr bi, int bitSetPosition) { | 10 BitInfoPtr bitSet(int bitSetPosition) { |
9 | 11 |
12 BitInfoPtr bi = (BitInfoPtr)malloc(sizeof(BitInfo)); | |
13 | |
14 bi->arrayNum = (bitSetPosition + 1) / bitBlock; | |
15 if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; | |
16 | |
17 printf("Array Num : %d\n",bi->arrayNum); | |
18 | |
19 unsigned long bitContainer[bi->arrayNum]; | |
20 for (int i = 0; i < bi->arrayNum; i++) { | |
21 bitContainer[i] = 0; | |
22 } | |
10 unsigned long tmp = 1; | 23 unsigned long tmp = 1; |
11 int arrayPosition = 0; | 24 int arrayPosition = 0; |
12 | 25 |
13 arrayPosition = bitSetPosition / bitBlock; | 26 arrayPosition = bitSetPosition / bitBlock; |
14 bitSetPosition = bitSetPosition % bitBlock; | 27 bitSetPosition = bitSetPosition % bitBlock; |
15 | 28 |
29 | |
30 bi->bitContainer = bitContainer; | |
16 tmp = tmp << (bitBlock - 1 - bitSetPosition); | 31 tmp = tmp << (bitBlock - 1 - bitSetPosition); |
17 bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; | 32 bi->bitContainer[arrayPosition] = bi->bitContainer[arrayPosition] | tmp; |
33 | |
34 bitPrint(bi); | |
35 | |
36 return bi; | |
18 } | 37 } |
19 | 38 |
20 void bitPrint(BitInfoPtr bi) { | 39 void bitPrint(BitInfoPtr bi) { |
21 for (int i = 0; i < bi->arrayNum ; i++) { | 40 for (int i = 0; i < bi->arrayNum ; i++) { |
22 for (int j = bitBlock - 1; j >= 0; j--) { | 41 for (int j = bitBlock - 1; j >= 0; j--) { |
27 puts(""); | 46 puts(""); |
28 } | 47 } |
29 | 48 |
30 int main(int argc, char **argv) { | 49 int main(int argc, char **argv) { |
31 | 50 |
32 BitInfoPtr bi = (BitInfoPtr)malloc(sizeof(BitInfo)); | |
33 int bitSetPosition = 0; | 51 int bitSetPosition = 0; |
34 | 52 |
35 for (int i = 1; i < argc ; i++) { | 53 for (int i = 1; i < argc ; i++) { |
36 if (strcmp(argv[i],"-n") == 0) { | 54 if (strcmp(argv[i],"-n") == 0) { |
37 bitSetPosition = atoi(argv[i+1]); | 55 bitSetPosition = atoi(argv[i+1]); |
38 } | 56 } |
39 } | 57 } |
40 | 58 |
41 bi->arrayNum = (bitSetPosition + 1) / bitBlock; | 59 BitInfoPtr bi = bitSet(bitSetPosition); |
42 if (((bitSetPosition + 1) % bitBlock) != 0) bi->arrayNum++; | |
43 | |
44 printf("Array Num : %d\n",bi->arrayNum); | |
45 | |
46 unsigned long bitContainer[bi->arrayNum]; | |
47 for (int i = 0; i < bi->arrayNum; i++) { | |
48 bitContainer[i] = 0; | |
49 } | |
50 | |
51 bi->bitContainer = bitContainer; | |
52 bitSet(bi,bitSetPosition); | |
53 bitPrint(bi); | 60 bitPrint(bi); |
54 return 0; | 61 return 0; |
55 } | 62 } |