Ordre croissant
Résolu
Anna
-
Anna -
Anna -
Bonjour,
Soit l'exercice suivant :
Soit un tableau T de n éléments, déterminer la longueur de la première plus longue séquence de nombres rangés par ordre croissant et le rang de son premier élément.
Est ce que la correction ci-dessus est correcte ? est ce que je dois initialiser la valeur de L à 1 avant de l'utiliser ? avec la boucle pour, est ce qu'on peut incrémenter le compteur manuellement comme à la fin de cette procédure ( i <-- j )? Merci en avance .
Soit l'exercice suivant :
Soit un tableau T de n éléments, déterminer la longueur de la première plus longue séquence de nombres rangés par ordre croissant et le rang de son premier élément.
Procédure Monotonie(T : Tab ; Var iplm, Lplm : Entier)
Var
i, j, L : Entier
Début
Lplm<-- 1
iplm<-- 1
pour i de 1 à n Faire
j<-- i + 1
TantQue (T[j] >= T[j-1]) Faire
j<-- j + 1
FinTQ
L<-- j – i + 1
Si (L > Lplm) Alors
iplm<-- i
Lplm<-- L
FinSi
i <-- j
FinPour
Fin
Est ce que la correction ci-dessus est correcte ? est ce que je dois initialiser la valeur de L à 1 avant de l'utiliser ? avec la boucle pour, est ce qu'on peut incrémenter le compteur manuellement comme à la fin de cette procédure ( i <-- j )? Merci en avance .
1 réponse
-
Bonjour,
Je pense que cet algorithme est faisable avec une seule boucle, c'est à dire que la conditionT[j] >= T[j-1]
serait plutôt à mettre dans un if de la boucle for afin d'éviter d'avoir un gérer un TantQue.
Remarque : ce serait plus compréhensible de mettreT[j-1] <= T[j]
-
-
pour i de 1 à n Faire
j<-- i + 1
TantQue (T[j] >= T[j-1]) Faire
Il y a je pense deux erreurs qui résultent de cej <-- i+1
:- À la fin tu vas avoir i=n et j=n+1 donc T[j] va dépasser la taille du tableau n.
- Le résultat L <-- j - i + 1 va être trop grand. Prenons l'exemple où n=1, donc i=1, j=2, L = 2-1+1 = 2, or on devrait toujours avoir L <= n
-
-
-
-