#include "ent-sort.h" int main(void) { eteindre_sortie(1); eteindre_sortie(2); do;while(!etat_entree(1)); allumer_sortie(2); do;while(!etat_entree(2) || !etat_entree(3)); eteindre_sortie(2); allumer_sortie(1); do;while(etat_entree(2) || etat_entree(3)); eteindre_sortie(2); }
#include "ent-sort.h" #define DIM 100 typedef int tableau[DIM]; int saisie(tableau ac, tableau tr) { int i,nb; printf("combien d'étapes (<%d) ?",DIM); scanf("%d",&nb); for(i=0;i<nb;i++) { printf("étape n° %d, sortie correspondante (-1 si aucune) ?",i); scanf("%d",ac+i); printf("entrée déclenchant l'étape suivante (négatif si inversée) ?"); scanf("%d',tr+i); } return nb; } void init_sorties(void) { int i; for(i=1;i<=16;i++) eteindre_sortie(i); } void attendre(int capteur) { if(capteur>0) do;while(!etat_entree(capteur)); else do;while(etat_entree(-capteur)); } void execution(tableau ac, tableau tr, int nb) { int etape; for(etape=0;etape<nb;etape++) { if(etape>0) if(ac[etape-1]>0) eteindre_sortie(ac[etape-1]); if(ac[etape]>0) allumer_sortie(ac[etape]); attendre(tr[etape]); } if(ac[nb-1]>0) eteindre_sortie(ac[nb-1]); } int main(void) { tableau action, transition; int nb; init_sorties(); nb=saisie(action, transition); execution(action, transition, nb); }
#include "ent-sort.h" #define DIM 100 typedef struct etape { int sortie; int etat; }etape; typedef etape tab_etapes[DIM]; typedef struct transition { int entree; int lien[10]; int nbliens; }transition; typedef transition tab_transitions[DIM]; //il faut également déclarer aux endroits où l'on en a besoin : tab_etapes et; tab_transitions tr; int nbet,nbtr; /*nb d'étapes et de transtions (<100) */ printf("%d",tr[0].lien[tr[0].nbliens-1]); //ou plus clair : int dern; dern=tr[0].nbliens-1; printf("%d",tr[0].lien[dern]); void cherche_transitions(int numetap, tab_transitions tr, int nbtr) { int i,j; for(i=0;i<nbtr;i++) for(j=0;j<tr[i].nbliens;j++) if(tr[i].lien[j]==numetap)printf("lié à la transition %d\n",i); }
Patrick TRAU,
ULP - IPST mars 03