Alla on esitetty ratkaisu ja siihen liittyvä testiympäristö. Ohjelman käyttäjä
simuloi antureita eli antaa ohjelmalle ohjeita lämmityksen ja ilmastoinnin suhteen get_message()-funktiossa.
devices()-funktio simuloi laitteiden ohjaamista tulostamalla ruudulle laitteiden
tilan eli status-muuttujan arvon.
#include <stdio.h>
#define ILMASTOINTI 1 #define LAMMITYS 2 #define POIS 0 #define PAALLE 1
struct message{ int toiminta; int laite; };
int get_message(struct message *); void devices(void);
char status; /* järjestelmän tila; globaali muuttuja */
void main(void) { struct message msg; printf ("\nStatus=%d",status); while (get_message(&msg)) { if (msg.laite==ILMASTOINTI) { if (msg.toiminta==PAALLE) { status |= ILMASTOINTI; } else { status &= ~ILMASTOINTI; } } else if (msg.laite==LAMMITYS) { if (msg.toiminta==PAALLE) { status |= LAMMITYS; } else { status &= ~LAMMITYS; } } devices(); } /* end while */ }
int get_message(struct message *m) { printf ("\nAnna toiminta: päälle=1, pois=0"); scanf ("%d",&(m->toiminta)); printf ("\nAnna laite: ilmastointi=1, lämmitys=2"); scanf ("%d",&(m->laite)); return m->laite; }
void devices(void) { printf ("\nstatus=%d",status); }