-
Notifications
You must be signed in to change notification settings - Fork 0
/
example3.c
125 lines (111 loc) · 2.31 KB
/
example3.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef enum {I, II} state;
static state s;
typedef enum {a} input;
typedef enum {m,n} output;
static input i;
static output o;
static int v;
void Initialization()
{ s=I; v=0; }
void Transition (input i)
{ switch(s)
{ case I:
switch(i)
{ case a: if(v>7) {s=II; o=n; v=v+1;}
else {s=I; o=m; v=v+1;}
break;
} break;
case II:
switch(i)
{ case a: if(v<=3) {s=I; o=m; v=v-1;}
else {s=II; o=n; v=v-1;}
break;
} break;
}
}
int main()
{
char ch;
Initialization();
while(1){
printf("Input event:");
while((ch = getchar()) != '\n')
{
if(ch=='a')
{
i=a;
Transition(i);
printf("Output: %d\n", o);
printf("Variable: %d\n", v);
}
//if((ch < '0') || (ch > '9'))
//{
// printf("Input num,ok?/n");
// break;
//}
//switch(current_state){
//case STATE0:
// if(ch == '2') current_state = STATE1;
// break;
//case STATE1:
// if(ch == '4') current_state = STATE2;
// break;
//case STATE2:
// if(ch == '7') current_state = STATE3;
// break;
//case STATE3:
// if(ch == '9') current_state = STATE4;
// break;
//default:
// current_state = STATE0;
// break;
//}
}
//if(current_state == STATE4){
// printf("Correct, lock is open!\n");
// current_state = STATE0;
//}else
//{
// printf("Wrong, locked!\n");
// current_state = STATE0;
//}
//break;
}
return 0;
}
void inputprint(input i)
{
switch(i)
{
case 0: printf("Input: a\n");break;
//case 1: printf("red\n");break;
//case 2: printf("blue\n");break;
//case 3: printf("white\n");break;
default: break;
}
}
void outputprint(output o)
{
switch(o)
{
case 0: printf("Output: m\n");break;
case 1: printf("Output: n\n");break;
//case 2: printf("blue\n");break;
//case 3: printf("white\n");break;
default: break;
}
}
void stateprint(state s)
{
switch(s)
{
case 0: printf("State: I\n");break;
case 1: printf("State: II\n");break;
//case 2: printf("blue\n");break;
//case 3: printf("white\n");break;
default: break;
}
}