annotate CbC-examples/loto6.c @ 126:5d30d517ebed

fix example
author mir3636
date Sun, 08 Apr 2018 20:55:21 +0900
parents 5f3bba7b355c
children 24d2e7cdba67
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>
126
5d30d517ebed fix example
mir3636
parents: 34
diff changeset
11 #include <string.h>
5d30d517ebed fix example
mir3636
parents: 34
diff changeset
12 #include <time.h>
34
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
126
5d30d517ebed fix example
mir3636
parents: 34
diff changeset
14 void (*ret)(int, void*);
34
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 void *env;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 print(int *numbers)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 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
22 free(numbers);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 goto ret(0, env);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 take(int *array, int size, 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 int *taked = (int*)malloc(sizeof(int)*length);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 memcpy(taked, array, sizeof(int)*length);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 free(array);
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 goto print(taked);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 shuffle(int *array, int size, int idx)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 int j = random() % size;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 int tmp = array[idx];
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 array[idx] = array[j];
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 array[j] = tmp;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 if (++idx < size) {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 goto shuffle(array, size, idx);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 } else {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 goto take(array, size, 6);
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 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 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
54 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 array[idx] = from;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 if (from+step > to) {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 goto shuffle(array, size, 0);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 } else {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 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
61 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 __code
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 range(int from, int to, int step)
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 int size = (to-from+1)/step;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 int *array = (int*)malloc(sizeof(int)*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 goto range_loop(array, 0, from, to, step, size);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 int
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 main()
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 {
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 srand(time(NULL));
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 ret = _CbC_return;
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 env = _CbC_environment;
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 goto range(1, 43, 1);
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 }
5f3bba7b355c add loto6.c
kent <kent@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82