annotate CbC-examples/loto6.c @ 108:7ad14f446135

add CbC-example/rectypeTest/
author Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp>
date Thu, 14 Jun 2012 20:30:24 +0900
parents 5f3bba7b355c
children 5d30d517ebed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /*
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 * Nov 10, 2009
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 * created by gongo.
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 *
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 * Nov 10, 2009
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 * modified by kent.
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 */
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 #include <stdio.h>
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 #include <stdlib.h>
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 (*ret)(int, void*);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 void *env;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 print(int *numbers)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 printf("%d-%d-%d-%d-%d-%d\n", numbers[0], numbers[1], numbers[2], numbers[3], numbers[4], numbers[5]);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 free(numbers);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 goto ret(0, env);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 take(int *array, int size, int length)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 int *taked = (int*)malloc(sizeof(int)*length);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 memcpy(taked, array, sizeof(int)*length);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 free(array);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 goto print(taked);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 shuffle(int *array, int size, int idx)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 int j = random() % size;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 int tmp = array[idx];
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 array[idx] = array[j];
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 array[j] = tmp;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 if (++idx < size) {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 goto shuffle(array, size, idx);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 } else {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 goto take(array, size, 6);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 range_loop(int *array, int idx, int from, int to, int step, int size)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 array[idx] = from;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 if (from+step > to) {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 goto shuffle(array, size, 0);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 } else {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 goto range_loop(array, idx+1, from+step, to, step, size);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 range(int from, int to, int step)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 int size = (to-from+1)/step;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 int *array = (int*)malloc(sizeof(int)*size);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 goto range_loop(array, 0, from, to, step, size);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 int
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 main()
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 srand(time(NULL));
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 ret = _CbC_return;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 env = _CbC_environment;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 goto range(1, 43, 1);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80