SECTIONS: MATHEMATIQUES, SCIENCES EXPERIMENTALES, SCIENCES TECHNIQUES
*** Document non officiel ***
Exclusif pour le forum INFOMATH : https://infomath.1fr1.net
Page 2 sur 2
PARTIE II (12 points)
1. La solution du problème peut être formée de 3 modules :
PROCEDURE SAISIE(var T:TAB; var n:entier) qui permet de saisir un tableau contenant des entiers classés dans l'ordre croissant. Elle sera utilisée dans la saisie des deux tableaux V1 et V2. |
PROCEDURE FUSIONNER(T1,T2:TAB; n1,n2:entier; var T3:TAB; n3:entier) qui permet de fusionner les deux tableaux en éliminant les doublons et en gardant l'ordre croissant dans T3. |
PROCEDURE AFFICHER(T:TAB;n:entier) qui permet d'afficher un tableau T de taille n. Cette procédure est utilisée pour afficher V1,V2 et V3. |
2. Analyse des modules :
Analyse du programme principal
NOM : FUSTAB |
||
S |
L.D.E |
O.U |
4
3 1 2 5 |
Résultat = Affichage Affichage = PROC AFFICHER(V1, N) PROC AFFICHER(V2,M) PROC AFFICHER(V3,P) (V3, P) = PROC FUSIONNER(V1,V2,N,M,V3,P) (V1,N) = PROC SAISIE(V1,N) (V2,M) = PROC SAISIE(V2,M) FIN FUSTAB |
AFFICHER V1, V2, V3 M, N, P
FUSIONNER SAISIE |
Analyse de la procédure SAISIE
DEFPROC SAISIE (var T:TAB; var n:ENTIER) |
||
S |
L.D.E |
O.U |
2
1
3
|
Résultat = (T, n) T = [ ] T[1] = Donnée POUR i de 1 à n FAIRE REPEAT T[i] = Donnée(‘Saisir un entier : ‘) JUSQU'A (T[i] > T[i–1]) FIN_POUR n = [ ] REPETER n = Donnée(‘ Taille du tableau : ‘) JUSQU’A (n DANS [2..20]) FIN SAISIE |
i |
Analyse de la procédure AFFICHER
DEFPROC AFFICHER (T:TAB; n:ENTIER) |
||
S |
L.D.E |
O.U |
1
2 |
Résultat = AFF AFF = [ ] POUR i de 1 à n FAIRE ECRIRE( T[i] ) FIN_POUR FIN SAISIE |
i |
Analyse de la procédure FUSIONNER
DEFPROC FUSIONNER (T1, T2 : TAB; n1, n2: ENTIER; var T3 : TAB; var n3 : ENTIER) |
||
S |
L.D.E |
O.U |
1
2 |
Résultat = (T3, n3) (T3, n3) = [i:=1, j:=1, k:=0] REPETER k := k + 1 SI (T1[i] = T2[j]) ALORS T3[k] = T1[i] i := i + 1 j := j + 1 SINON SI (T1[i] > T2[j]) ALORS T3[k] = T2[j] j := j + 1 SINON T3[k] = T1[i] i := i + 1 FIN_SI FIN_SI JUSQU'A (i>n1) OU (j>n2) SI (i<=n1) ALORS POUR k de i à n1 FAIRE n3:=n3+1 T3[n3]:=T1[k] FIN_POUR FINSI SI (j<=n2) ALORS POUR k de jà n2 FAIRE n3:=n3+1 T3[n3]:=T2[k] FIN_POUR FINSI
FIN FUSIONNER |
i
j
k
|
Liens :