question posée à l'examen écrit du 25 juin 1998
Avec les déclarations suivantes définissant une table de décision ainsi qu'un arbre binaire ordonné, écrivez une fonction «ConstruitArbre» qui convertisse une table de décision condensée (paramètre d'entrée) en arbre binairee (paramètre de sortie) où les feuilles contiennent les indicateurs d'actions d'une règle et les noeuds intermédiaires contiennent le texte des conditions de façon que l'arborescence permette de sélectionner la règle qui s'appliquera à un cas donné.
Indication: il faut s'inspirer de l'algorithme de conversion d'une table de décision en cascade de tests, mais construire une structure d'arbre au lieu de produire du code Pascal.
const MaxNbCond = ...; MaxNbRegles = ...; MaxNbActions = ...; type Conditions =(Vrai, Faux, Indetermine); TableDecision = record NbConditions: 1..MaxNbCond; NbRegles: 1..MaxNbRegles; ValCond: array[1..MaxNbRegles, 1..MaxNbCond] of Conditions; NbActions: 1..MaxNbActions; Agir: array[1..MaxNbRegles, 1..MaxNbActions] of boolean; TxtConditions:array[1..MaxNbCond] of string[30]; TxtActions:array[1..MaxNbActions] of string[30]; end; { TableDecision } PtrNoeud: ^Noeud; Noeud = record case Feuille: boolean of false: (TxtCond: string[30]; Vrai, Faux: PtrNoeud); true: (Actions: array[1..MaxNbActions] of boolean); end; { Noeud } function ConstruitArbre(Table: TableDecision): PtrNoeud;
Site Hosting: Bronco