| 
3.3.3.13 Algorithme principal : L'algorithme principal fait appel aux fonctions décrites
précédemment. Variables globales : Sf, surface, Tf, temps, Pf, puissance : réel ; head_operateurs :=0 : variable qui pointe sur un
élément de type OPERATEURS; head_comb_typ_op :=0 : variable qui pointe sur un
élément de type COMB_TYP_OP ; head_instance :=0 : variable qui pointe sur un
élément de type INSTANCE ; head_comb_ops :=0 : variable qui pointe sur un
élément de type COMB_OPS ; nb_traces : entier ; flag :=0 : entier ; ptr_svg :=0 : variable qui pointe sur un élément
de type COMB_OPS ; s, t, p : float ; Variables locales : i, j, k ,l, m, num_cycle :entier ; ptr : variable qui pointe sur un élément de type
OPERATEURS ; ptr1 : variable qui pointe sur un élément de type
COMB_TYP_OP ; ptr11 : variable qui pointe sur un élément de type
INSTANCE ; chaine[16], chaine1[4] : chaînes de caractères ; fich_trace[20], fich_dp[20], ch_temp[4],mot[20] : chaînes
de caractères ; fp, fp_dp : pointeurs de Fichiers ; DEBUT si (argc ? 4) // argc est le nbre d'arguments dans la commande alors { Afficher (`' Erreur de commande- -taper : affect val(Sf) val(Tf)
val(Pf) `'); exit ; } fsi //entrer les valeurs des contraintes imposées par le
concepteur Lire (Sf) ; Lire (Tf) ; Lire (Pf) ; // Faire appel a la fonction create_lists () qui permet de
créer les différentes listes create_lists () ; ptr :=head_operateurs ; //ouvrir le fichier NB_TRACES en lecture ; fp :=ouvrir (`' NB_TRACES `', en lecture) ; Lecture (fp, nb_traces) ; Fermer le fichier (fp) ; Pour( i :=1 jusqu'à nb_traces) Faire { fich_trace := `' TRACE `' ; ch_temp :=i ; concatener les contenus de fich_trace avec ch_temp ; fp :=ouvrir (fich_trace, en lecture) ; fich_dp := `' DP `' ; concatener les contenus de fich_dp avec ch_temp fp_dp :=ouvrir (fich_dp, en écriture) ; Tant que non fin du fichier pointé par fp Faire { //lire à partir du fichier fp num_cycle et mot ; Lecture (fp, num_cycle, mot) ; Ecriture (fp_dp, num_cycle) ; // Ecriture dans le fichier
pointé par fp_dp Tant que (mot ? `'FIN `') Faire { Ecriture (fp_dp, `' # `', mot) ; Lecture (fp, mot) ; } Ffaire Ecriture (fp_dp, `' FIN `') ; Lecture (fp, `' \n `') ; } Fsi Ffaire Fermer le fichier (fp) ; Fermer le fichier (fp_dp) ; } Ffaire surface :=0 ; // Faire appel a la fonction récursive configuration () configuration (ptr) ; Afficher (`' \n Echec total: Aucune combinaison ne satisfait
toutes les contraintes `') ; /* NOTE : En cas de
succès, les résultats sont affichés au niveau de la
procédure calculer_S_T_P() et le programme s'arrête : Le message
d'échec ci-dessus ne s'affichera donc pas*/. FIN Fichier Makefile :  Le fichier Makefile qui a nous a servi lors du
développement de notre application est le suivant : affect: trouve_combinaison.o principal.o cc -o affect trouve_combinaison.o principal.o
trouve_combinaison.o: trouve_combinaison.c decl.h cc -c -g
trouve_combinaison.c principal.o: principal.c decl.h cc -c -g principal.c > L'option -c permet une compilation séparée et
génère le fichier objet correspondant au fichier source
considéré. > L'option -g permet d'utiliser le débogueur en cas de
besoin. > L'option -o permet de générer
l'exécutable (édition des liens à partir des fichiers
objet). |