Bonjour à toutes et à tous, pendant ces vacances, j'ai un DM à faire ... Tout va bien mis à part un exercice qui porte sur les algorithmes ... Je l'ai tourné dans tous les sens, mais je n'arrive vraiment pas ! J'espère que vous pourrez m'aider:
" On considère une liste L (indice allant de 1 à N) de réels positifs et le fragment d'algorithme suivant:
M=O
Pour J allant de 1 à N
Si L[J] > M alors M = L[J]
Afficher M
1- Détailler les étapes dans le cas où N vaut 5 et L contient les valeurs 4, 12, 8, 15 et 3
2- Que réalise cette boucle ?
3- Comment l'adapter pour qu'elle puisse effectuer le même traitement dans le cas où on ne sait rien à l'avance des nombres qui composent la liste ?
Merci d'avance !!
Ryan
C'est justement ça le problème, je n'ai aucun avis ... Je pense que le fait d'être bloqué dès la première question, me bloque le reste de l'exercice ...
Oui justement c'est que je j'essaie de faire, mais depuis ce matin, je ne réussi pas à avancer à cause de cette question 1
il faut d'abord comprendre en général ce que fait cet algorithme avant même de répondre à la 1ère question.
Cet algorithme parcourt à l'aide de la boucle POUR une liste L à N éléments.Pendant ce parcourt on compare(à l'aide de SI) la valeur d'un élément avec la valeur de l'élément suivant et si la valeur de l'élément est plus grande on la place dans M.A la fin du parcourt on obtiendra la plus grande valeur de la liste L.
1.Détails des étapes pour N=5, L={4, 12, 8, 15 et 3}
1ère étape J=1,L[1]=4, N=5,M=0
Pour J allant de 1 à 5
Si L[1] > M (4>0 ? vrai)
alors M = L[1]=4
Afficher M (avec M=4)
2ème étape : J=2, L[2]= 12, N=5,M=4
Pour J allant de 2 à 5
Si L[2] > M (12>4 ? vrai)
alors M = L[1]=12
Afficher M (avec M=12)
3ème étape : J=3, L[3]= 8, N=5,M=12
Pour J allant de 3 à 5
Si L[3] > M (8>12 ?faux)
Afficher M (M=12)
4ème étape : J=4, L[4]= 15, N=5,M=12
Pour J allant de 3 à 5
Si L[4] > M (15>12 ?vrai)
alors M = L[4]=15
Afficher M (avec M=15)
tu peux maintenant faire la 5ème étape en utilisant le même raisonnement que précédemment
Pour ma 4ème étape j'aurai dû écrire : Pour J allant de 4 à 5 et non pour J allant de 3 à 5.
Je réecrit la 4ème étape:
4ème étape : J=4, L[4]= 15, N=5,M=12
Pour J allant de 4 à 5
Si L[4] > M (15>12 ?vrai)
alors M = L[4]=15
Afficher M (avec M=15)
Merci beaucoup !!!!!!
J'espère avoir compris,
étape 5: J=5 ; L[5]=3 ; N=5 M=15
Pour J = 5
Si L[5] > M (3>15) --> faux
Afficher M (avec M=15)
J'espère avoir fait juste ...
J'aimerais savoir si ce que je pense peut être correcte:
2- La boucle permet de trouver la valeur maximale de la liste L
3-Pour l'adapter, il faut certainement continuer jusqu'à qu'il n'y ai plus de valeurs ...
Mais comment faire pour la 3- ?
pour 2/ tu as compris
pour 3/ précise ce qu'on ne connait pas à l'avance :
- le nombre de nombres contenus dans la liste
ou
- la valeur des nombres contenus dans la liste (et qui pourraient être négatifs)
Vous pourriez juste me donner encore quelques indications svp ??
Parce que le nombre de nombre, comme vous dites, est N ... Donc on ne peut rien envisager ...
on va donc considérer qu'on ne connait pas à l'avance
la valeur des nombres contenus dans la liste, et qui
pourraient très bien être négatifs.
Dans ce cas, au lieu d'affecter 0 comme valeur à la variable M,
on lui affecte la 1° valeur de la liste L
soit donc l'instruction : M = L[0]
en lieu et place de M = 0
...
dsl. c'est :
soit donc l'instruction : M = L[1]
car le premier indice de la liste est 1
(et non 0 comme dans certain autre langage)
en lieu et place de M = 0
Bonjour désolé de m'imposer dans ce sujet mais j'ai besoin d'aide sur mon post mais personne ne répond plus ==> Devoir Maison TS fonctions
Merci d'avance et encore désolé !
Donc, pour la question 3, il faut juste dire que pour adapter la boucle, nous devons affecter la plus petite valeur à la variable M ?
Donc, L[1] = M ---> M = 0 ???
non c'est pas la plus petite valeur que nous devons faut affecter à la variable M mais nous devons affecter à la variable M la 1ère valeur (ou 1er élément) d'une liste c-a-d la valeur située à l'indice n°1.
Dans l'algorithme tu remplaces M=0 par M=L[1]
Ensuite optionnellement(ça ne change rien sur le résultat), on boucle à partir de l'élément n°2 de la liste,
donc: Pour J allant de 2 à N.
----------------------
exemple d'une liste: L={50, 5 , 44, 55, 25, 3}
la 1ère valeur de la liste L est 50 et notée L[1], la 2ème valeur est 5 et notée L[2]
Donc, si je comprend bien: 3- Afin de l'adapter, nous devons affecter à la variable M, la 1re valeur de la liste L, soit, L[1] ...
Je ne comprend vraiment pas comment le formuler ...
3-En initialisant la variable M à 0, on exclue toute possibilité pour la liste L de ne contenir que des valeurs négatives auquel cas l'usage de la boucle (POUR) serait inutile à la situation car la boucle affichera toujours 0 comme valeur maxi (0 est plus grand que n'importe quel nombre négatif). Si en revanche l'on ne sait pas à l'avance les valeurs que contiendra la liste L un moyen d'adapter la boucle par rapport à ce cas serait d'affecter à la variable M une valeur située en tête de liste L (1ère valeur de L) c-a-d M=L[1].
tu comprends mieux maintenant la 3em question?
si on maintient la boucle J allant de 1 à N
on peut initialiser M avec n'importe quelle valeur de la liste L
y compris L[N] ou L[2] ou celle qu'on veut.
...
faut pas poser de question superflue, si tu veux pas être embrouiller.
dur.. dur.
Oui je suis très bizarre je confirme
... Bah alors merci beaucoup à vous deux de m'avoir aidé, c'est vraiment sympathique !!
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :