/* Zustandstabelle */ /* Datei:automat1.c */ #include #include unsigned int zustand = 0; unsigned int ereignis; void st_0_ev_0(void) /*im Zustand 0 kommt Ereignis 0*/ { printf("Zustand: %d\t",zustand); zustand=1; /* Wohin als nächstes */ printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_0_ev_1(void) /*im Zustand 0 kommt Ereignis 1*/ { printf("Zustand: %d\t",zustand); zustand=2; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_0_ev_2(void) /*im Zustand 0 kommt Ereignis 2*/ { printf("Zustand: %d\t",zustand); zustand=0; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_1_ev_0(void) /*im Zustand 1 kommt Ereignis 0*/ { printf("Zustand: %d\t",zustand); zustand=2; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_1_ev_1(void) /*im Zustand 1 kommt Ereignis 1*/ { printf("Zustand: %d\t",zustand); zustand=0; printf("ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_1_ev_2(void) { printf("Zustand: %d\t",zustand); zustand=1; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_2_ev_0(void) { printf("Zustand: %d\t",zustand); zustand=0; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_2_ev_1(void) { printf("Zustand: %d\t",zustand); zustand=1; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } void st_2_ev_2(void) { printf("Zustand: %d\t",zustand); zustand=2; printf("Ereignis: %d\tZustand neu: %d\n", ereignis,zustand); } /* Aufbau des Automaten */ void (* (automat[3][3]))(void)= { st_0_ev_0, st_0_ev_1, st_0_ev_2, /* zustand 0 */ st_1_ev_0, st_1_ev_1, st_1_ev_2, /* zustand 1 */ st_2_ev_0, st_2_ev_1, st_2_ev_2 /* zustand 2 */ }; int main() { do { /* Ereignis holen */ printf("Bitte Ereignis (0-2) eintippen:\n"); ereignis = getch() & 0x0f; if(ereignis<3) (*automat[zustand][ereignis])(); else printf("Falsches Ereignis\n"); } while (ereignis != '\xb'); /* Für ESC */ return 0; }