Corrigé 46. Enoncé
Soient
A Un Arb De Chaine ;
N Un Pointeur Vers Un Arb De Chaine ;
Maxx, I des Entiers ;
P_maxx : Arb De Chaine ;
Construire, Rech, Feuille, Maxi des Actions ;
Exist : Fonction ( Booleen ) ;
Debut
Appel Construire ( A ) ;
Ecrire ( 'Répertoire feuille' ) ;
Appel Feuille ( A ) ;
N := A ;
Ecrire ( Exist ( '/y' , N ) ) ;
Maxx := 0 ;
Appel Maxi ( A , I ) ;
Ecrire ( I ) ;
Fin
/* Rech */
Action Rech ( R , Nom , Trouv , P , Per ) ;
Soient
Per , P , R Des Arb De Chaine ;
Nom : Chaine ;
Trouv : Booleen ;
Debut
Trouv := Faux ;
Per := Nil ;
P := Fg ( R ) ;
Tq ( P <> Nil ) Et ( Non Trouv )
Si Nom = Info ( P )
Trouv := Vrai
Sinon
Per := P ;
P := Fd ( P )
Fsi
Ftq
Fin
/* Construction*/
Action Construire ( A ) ;
Soit
R , P , Q , Per , A Des Arb De Chaine ;
S : Chaine ;
Arret , Trouv : Booleen ;
I , J Des Entiers ;
Debut
Creernoeud ( A ) ;
Aff_info ( A , '/' ) ;
Pour I := 1 , 8 : /* 8 désigne le nombre de répertoires */
Lire ( S ) ;
J := 2 ;
R := A ;
Arret := Faux ;
Tq ( J <= Longchaine ( S ) ) Et ( Non Arret
)
Appel Rech ( R , Caract
( S , J ) , Trouv , P , Per ) ;
Si Per = Nil
Arret := Vrai ;
Creernoeud ( Q ) ;
Aff_info ( Q , Caract ( S , J ) ) ;
Aff_fg ( R , Q )
Sinon
Si Trouv
R := P ;
J := J + 1
Sinon
Creernoeud ( Q ) ;
Aff_info ( Q , Caract ( S , J ) ) ;
Aff_fd ( Per , Q ) ;
Arret := Vrai
Fsi
Fsi
Ftq ;
Si Arret
J := J + 1 ;
Tq J <= Longchaine (
S )
R := Q ;
Creernoeud ( Q ) ;
Aff_info ( Q , Caract ( S , J ) ) ;
Aff_fg ( R , Q ) ;
J := J + 1 ;
Ftq
Fsi
Finpour ;
Fin
/* Répertoires feuilles */
Action Feuille ( N ) ;
Soit
N Un Arb De Chaine ;
Debut
Si N <> Nil
Si ( Fg ( N ) = Nil )
Ecrire ( Info ( N ) )
Fsi ;
Appel Feuille ( Fg ( N ) ) ;
Appel Feuille ( Fd ( N ) )
Fsi
Fin
/* Recherche d'un répertoire */
Fonction Exist ( Rep , N ) : Booleen
Soit
P , Per , N Des Arb De Chaine ;
Rep : Chaine ;
Trouv : Booleen ;
J Un Entier ;
Debut
Si Caract ( Rep , 1 ) <> Info ( N )
Exist := Faux
Sinon
J := 2 ;
Trouv := Faux ;
Tq ( J <= Longchaine ( Rep ) ) Et Non Trouv
Appel Rech ( N , Caract
( Rep , J ) , Trouv , P , Per ) ;
Si Trouv
N := P ;
J := J + 1
Fsi
Ftq ;
Exist := Trouv
Fsi
Fin
/* Plus grand répertoire */
Action Maxi ( N , K )
Soit
I , K , K1 Des Entiers ;
N , P : Arb De Chaines ;
Debut
P := Fg ( N ) ;
I := 0 ;
Tq P <> Nil
I := I + 1 ;
Appel Maxi ( P , K1 ) ;
Si K1 > Maxx
Maxx := K1 ;
P_maxx := P
Fsi ;
P := Fd ( P )
Ftq ;
K := I ;
Si K > Maxx
Maxx := K ;
P_maxx := N
Fsi
Fin