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).
|