Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithme

Posté par
nico17
27-03-16 à 16:44

L'algorithme ci-dessous simule n lancers d'une pièce non truquée.

Variables: n,r sont des entier naturels non nuls
Entrée:       Saisir n
Traitement et sortie : Pour i allant de 1 à n faire
                                                r prend la valeur ...............
                                                afficher r
                                             Fin pour

1. Que peut-on mettre à la place des pointillés dans l'algorithme ci-dessus ?
   .  Pile ou Face
   .  Nombre_aléatoire(Pile,Face)
   .  Nombre_entier_aléatoire(0,1)
   .  Nombre_entier_aléatoire(1,2)
   .  Nombre_entier_aléatoire(1,6)
   .  Nombre_entier_aléatoire(P,F)

2. Taper l'algorithme ci-dessus sur Algobox.

3. Modifier l'algorithme afin qu'il affiche le nombre de "Pile" obtenu

Bonjour voici mon soucis je n'arrive pas du tout à composer l'algorithme ci-dessus sur algobox, à chaque fois cela me fait une erreur et je ne comprend pas pourquoi, j'ai essayer toutes les propositions qui sont proposé mais à chaque fois cela me fait une erreur de calcul ou bien une erreur de syntaxe.

merci d'avance pour votre aide

Posté par
fenamat84
re : algorithme 27-03-16 à 17:53

Bonjour,

Tout d'abord, à la question 1, il y a des cas qui ne vont pas répondre à l'algorithme posé !!
Lesquels ?
Je te rappelle que l'algorithme va simuler n lancers d'une pièce non truquée.

Posté par
LeDino
re : algorithme 27-03-16 à 18:04

La question 1 n'a aucun intérêt du point de vue algorithmique.

Quant à la réalisation avec ALGOBOX il faut trouver une aide en ligne qui donne la syntaxe du générateur de nombres aléatoires.

Posté par
fenamat84
re : algorithme 27-03-16 à 18:14

@Le Dino : Il y a quand même des cas dont il est totalement inutile de vouloir tester, et d'autres qui ne fonctionneront même pas du tout...

Quant au générateur de nombres aléatoires c'est la fonction : algobox_alea_ent(p,n) (génère un nombre nombre entre p et n)

Posté par
LeDino
re : algorithme 27-03-16 à 18:15

[bleu]Tirage = floor(alea()+0,5))[\bleu]

.. decrait convenir pour générer 0 ou 1 avec equiprobabilité.

Posté par
LeDino
re : algorithme 27-03-16 à 18:19

fenamat84 @ 27-03-2016 à 18:14

@Le Dino : Il y a quand même des cas dont il est totalement inutile de vouloir tester, et d'autres qui ne fonctionneront même pas du tout...
Au plan syntaxique oui.

Mais pas du point de vue algorithmique.

Posté par
nico17
re : algorithme 27-03-16 à 19:34

merci beaucoup de votre aide pour la question n°1 je pense que c'est (1,2) car une pièce a 2 faces et le numéro 1 correspondrait soit à pile soit à face et la même chose pour le numéro 2

Posté par
nico17
re : algorithme 27-03-16 à 19:52

Pour le premier algorithme, cela donne :

Variables: n est du type nombre
                        r est du type nombre
                        i est du type nombre

Début de l'algorithme:  lire n
                                                   Pour i allant de 1 à n
   Début Pour : r prend la valeur ALGOBOX_ALEA_ENT(1,2)
                                 afficher r
    Fin Pour
Fin de l'algorithme

Voilà ce que cela fait pour l'algorithme n°1 enfin je pense

Posté par
LeDino
re : algorithme 28-03-16 à 06:10

Bonsoir,

Si tu attribues la valeur "PILE" à l'un des nombres générés, par exemple 2 (et donc "FACE" pour 1), alors ton algorithme fonctionnera, au sens où il affichera des 1 pour FACE et des 2 pour PILE.

Si tu veux répondre plus facilement à la question suivante, il est plus judicieux de tirer des 0 pour FACE et des 1 pour PILE. Car ainsi, en additionnant les valeurs obtenues (0 ou 1), tu obtiens directement le nombre de PILES.

Mais tu peux aussi t'en sortir comme tu as fait, en utilisant un test du genre :
SI (r = 2)  Alors  piles = piles + 1        (après avoir initialisé piles à 0 avant la boucle).

Posté par
nico17
re : algorithme 28-03-16 à 16:02

Merci beaucoup de votre aide
  mais le seul soucis c'est que le résultat P donne le nombre de lancers (n) qui est taper au début de l'algorithme   :/

Posté par
LeDino
re : algorithme 28-03-16 à 16:33

Tu parles de ton programme écrit en ALGOBOX lorsque tu l'exécutes ?
Si tu veux qu'on t'aide à le corriger, il faut nous le montrer...

Posté par
mathafou Moderateur
re : algorithme 28-03-16 à 16:38

Bonjour,

"SI (r = 2)..." se traduit en Algobox par SI (r == 2) ...
les deux signes égale veulent dire "je teste si c'est égal"
avec un seul signe = le fonctionnement interne de Algobox comprend ça comme une affectation (un "prend la valeur") et met 2 dans la variable r
puis teste la valeur de ce 2 qui est différent de 0 et donc est "vrai" et exécute le "SI" systématiquement.
un des "pièges classiques" de la programmation (en Algobox et en de nombreux autres langages d'ailleurs)

Posté par
LeDino
re : algorithme 28-03-16 à 16:48

... et une raison de plus pour affecter à r la valeur 1 pour PILE et 0 pour FACE.
Cela évite d'avoir à faire un test ...

Posté par
nico17
re : algorithme 28-03-16 à 16:55

Comme je ne peut vous le montrer en copiant l'image je vais donc vous l'écrire

Variables: n est du type nombre
                        r est du type nombre
                         i est du type nombre
                        P est du type nombre

Début de l'algorithme: Lire n
                                                   P prend la valeur 0
                             Pour i allant de 1 à n
Début Pour                        r prend la valeur ALGOBOX_ALEA_ENT(1,2)
                                                   afficher r
                                       Si (r=2) Alors
                                       Début Si  
                                                   P prend la valeur P+1
                                      Fin Si
                                   Fin Pour
                                                Afficher P
                                   Fin de l'Algorithme

Posté par
nico17
re : algorithme 28-03-16 à 16:57

Merci a tous de votre aide je vais donc allez tester ça

Posté par
nico17
re : algorithme 28-03-16 à 17:00

Merci beaucoup franchement merci a tous !!!!! Grâce a vous tous cela marche alléluia !!!
merci merci merci du fond du cœur !!!!   

Posté par
LeDino
re : algorithme 28-03-16 à 17:05

Tu peux surtout remercier mathafou pour son flair : il a deviné ton erreur avant même de voir ton code ...

Et pour ma part, je te conseille vivement d'essayer aussi la variante suivante.
Une fois que tu l'auras testée essaie de comprendre pourquoi elle fonctionne aussi.
Si tu ne comprends pas : dis-le nous et on te ré expliquera...

Début Pour
                  r prend la valeur ALGOBOX_ALEA_ENT(0,1)
                  afficher r
                  P prend la valeur P + r
                  Fin Pour  
Afficher P

Posté par
nico17
re : algorithme 28-03-16 à 17:07

d'accord je court essayer

Posté par
nico17
re : algorithme 28-03-16 à 17:18

J'ai essayer et je pense qu'il est plus judicieux de prendre r prend la valeur ALGOBOX_ALEA_ENT(1,2) car dans la question il est demander de modifier l'algorithme afin qu'il affiche le nombre de Pile obtenu et avec cette valeur il n'y a pas besoin d'additionner les 0 ou bien les 1 pour obtenir le nombre de Pile obtenu.
Merci a tous d'avoir contribué a résoudre mon problème, vous m'avez tous fait bien avancer et surtout vous m'avez fait comprendre mes erreurs.
Encore merci à tous et à toutes

Posté par
mathafou Moderateur
re : algorithme 28-03-16 à 17:25

donc tu n'as pas compris l'algorithme de LeDino ...

Posté par
nico17
re : algorithme 28-03-16 à 17:33

Oupss excusez moi j'avais simplement oublier de modifier (r==2) qui va devenir (r==1) donc 1 sera Pile et 0 sera Face.
Merci, à nouveau je comprends mes erreurs

Posté par
mathafou Moderateur
re : algorithme 28-03-16 à 17:39


avec l'algo de LeDino il n'y a plus aucun test "si r == quoi que ce soit"
donc rien à modifier dans un test qui n'existe plus à part sa suppression complète.

la correspondance ente {0, 1} et {pile, face} est totalement arbitraire et uniquement dans la tête de celui qui pense l'algorithme
on choisit celle que l'on veut
ou celle qui nous arrange...

Posté par
nico17
re : algorithme 28-03-16 à 17:46

Justement il faut se mettre à la place du professeur en quelque sorte, nous devons donc faire en sorte de pouvoir imaginer l'algorithme.

Posté par
LeDino
re : algorithme 28-03-16 à 18:11

Mais encore plus "justement" !

La variante que je te propose est plus simple... et elle est plus proche de l'algorithme d'origine.
Dans ta méthode, tu es obligé d'introduire un test SI ... ALORS ...
Dans ma méthode, ce n'est pas nécessaire.

Tu n'as donc aucune raison de préférer celle que tu as trouvée à celle que je te propose.
Et il est de toutes façons toujours intéressant de voir qu'il y a plusieurs manières d'arriver au résultat.

Maintenant tu fais comme tu veux...

Posté par
LeDino
re : algorithme 28-03-16 à 18:12

Quant à ton prof, si tu veux te mettre à sa place...
... je peux t'assurer qu'il serait absolument enchanté de savoir que tu as essayé plusieurs méthodes.

Posté par
nico17
re : algorithme 28-03-16 à 18:23

Effectivement vous avez raison je vient de comprendre et je viens donc de tester et c'est effectivement plus simple vu qu'il n'y a plus la condition
Encore merci a vous pour m'avoir aider, sans vous je n'aurai jamais réussi

Posté par
LeDino
re : algorithme 28-03-16 à 18:54

Super !
Bravo à toi d'avoir prolongé ton effort.
En récompense tu as compris quelque chose de plus qui te servira sûrement à l'avenir...

Posté par
nico17
re : algorithme 28-03-16 à 19:02

Encore merci a tous et à toutes ! Oui effectivement cela pourra me servir dans l'avenir vu que je vais entreprendre une filière scientifique
Encore merci vous m'avez vraiment aidé



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !