annotate CbC-examples/loto6.c @ 148:24d2e7cdba67

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