Bonsoir
J'ai besoin d'aide concernant l'écriture d'un algorithme avec les structures itératives, j'ai essayé de faire l exo mais je suis pas sur merci de bien vouloir m'aider
Exo
Ecrire un algorithme qui affiche toutes les possibilités d'obtenir un total de 15 en ajoutant trois entiers choisis entre 1 et 9
Voilà ce que j ai fait
Algo somme
Variables p ,a , b ,c , S
Début
a<- --- aléatoire (1,9)
b<----aleatoire ( 1, 9)
c<----aleatoire (1,9)
S<-- a+b+c
P<---0
Tant que S= 15 Faire
P<---P +1
Fantastique
Fin
Bonjour,
Avec des choix aléatoires, tu risques de manquer certaines combinaisons possibles.
Je verrais plutôt 3 boucles imbriquées :
Pour a de 1 à 9
Pour b de 1 à 9
Pour c de 1 à 9
Calculer S = a+b+c
Si S = 15 alors imprimer (a, b, c)
Fin de la boucle sur c
Fin de la boucle sur b
Fin de la boucle sur a
Bonjour,
"tu risques de"
Amar252, ton programme, c'est même bien pire que ça
on n'effectue que une seule fois ces trois choix aléatoires
il y a peu de chance qu'on obtienne 15
mais si par hasard on obtient 15 le programme ne se termine jamais car la boucle tant que S = 15 est alors sans fin, S restant à 15 éternellement.
et si S vaut autre chose que 15 la boucle tant que n'est pas exécutée du tout et on en reste là.
de toute façon ton programme ne donne aucun résultat, il ne fait que faire des calculs dans son coin en douce.
Bonjour
En réalité on pourrait utiliser l'aléatoire mais ce n'est pas du tout la façon optimale d'écrire le code demandé , car basiquement en trois boucle for c'est bouclé
j'ai moi même essayé par l'aléatoire sous vba et ça marche a condition de bien mettre tout les paramètres en place et voila ce que ca donne :
le code precedent me retourne bien les 61 cas possibles , mais 61 doit etre évalué par un calcul séparé ou par un code different
ce qu'on peut dire d'un tel programme est que sa durée d'exécution est aléatoire !
d'autre part une méthode avec 3 boucles est inefficace :
une fois qu'on a a et b des deux boucles sur a et b, alors c = 15-a-b
deux boucles imbriquées suffisent
avec un test que 1 ≤ c ≤ 9, ou une astuce sur les bornes de la boucle sur b
avec l'astuce, les seules exécutions des boucles sont directement les seuls triplets "qui marchent" (61 boucles exécutées seulement) alors que avec 3 boucles on boucle 93 - 61 = 661 exécutions inutiles en plus des 61 cas qui marchent.
avec 2 boucles imbriquées sans astuce sur les bornes mais avec le test sur c donnent 92 = 81 boucles exécutées (au lieu de 93 = 729 avec 3 boucles imbriquées !)
je laisse à Amar252 le soin de modifier l'algo de LeHibou en ce sens.
(c'est tout de même au demandeur de bosser et pas aux intervenants de lui fournir un algo tout maché )
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :