j'ai besoin d'aide pour la réalisation d'un algorithme:
on propose de déterminé si, dans une classe de 27, il peut y avoir au moins deux élèves qui ont la même date d'anniversaire.
Pour cela, on effectue une simulation à l'aide de la calculatrice.
Dans un 1er temps: il s'agit de tirer au sort les 27 dates d'anniversaire. Elles sont mémorisées dans une liste.
On suppose que les dats d'anniversaire sont réparties uniformément sur l'année civile de 365 jours. Une date d'anniversaire est un entier naturel entre 1 et 365.
(cette partie je l'ai réalisée sans problème c'est la suite qui est plus complexe !!)
Dans un second temps: il faudra chercher si deux dates coïncident. (là je ne sais pas comment faire.)
ravienger Invité
Posté le : Ven 27 Avr 2012, 16:19
Pour la première partie voici l'algorithme que j'ai trouvé:
Entrée: /
Traitement: EffListe1 (L1)
Pour I allant de 1 à 27 faire
Stocker un nombre entier aléatoire compris entre 1 et 365 au rang I dans la liste 1
Sortie: Afficher la Liste
en language calculatrice ça donne ça :
:EffListe L1
:For(I,1,27)
:entAléat(1,365)->L1(I)
:End
:Disp L1
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 27 Avr 2012, 17:49
Citer
On propose de déterminer si, dans une classe de 27, il peut y avoir au moins deux élèves qui ont la même dâte d'anniversaire.
Oui il est tout-à-fait possible que deux élèves aient la même dâte de naissance.
La question suivante que je me pose est la probabilité d'un tel évènement.
Une simple simulation me semble manquer de rigueur vis-à-vis de la recherche mais suivons tout-de-même l'énoncé de l'exercice.
----
Ce que tu as posté en guise de simulation est correct.
Mais il existe une option à la fonction entAléat permettant de générer toute la liste d'un coup.
Code
entAléat(1,365,27)->L1
Pause L1
----
Pour tester si deux variables sont identiques, je propose de passer en revue toutes les valeurs de la liste avec deux boucles imbriquées.
Code
0->B
For(C,1,27
For(D,1,27
If L1(C)=L1(D) et C[différent de]D
1->B
End
End
If B
Disp "VALIDE
If non(B
Disp "INVALIDE
==== facultatif, visiblement non-demandé par l'énoncé.
Ce que je propose comme crible est une imbrication de boucles For passant en revue toutes les valeurs 1 à 365 de chacune des 27 variables dâte de chacun des élèves.
A l'intérieur de ces boucles il reste alors à détecter les situations où deux dâtes au moins sont confondues.
J'ai un problème : les 27 variables lettres de la calculatrice sont utilisées par le crible alors il est plus compliqué d'écrire un test de détection de dâtes identiques.
Je suis contraint d'utiliser d'autres variables moins pratiques comme "N", "I%", "ValAct" et "PMT" du menu Finance.
Pour les saisir, va dans le menu Finance>variables
Code
0->PMT // ceci est une variable du menu finance
For(A,1,365
For(B,1,365
... // for avec toutes les lettres de C à Y
For(Z,1,365
For(¤,1,365 // "¤" représente thêta, le rond barré de la touche 3
{A,B, ... ,Z,¤->L1 // remplir la liste avec chacune des variables
0->ValAct
For(N,1,27 // ce "N" n'est pas le N normal, mais celui du menu finance
For(I%,1,27
If L1(N)=L1(I%) et N[différent de]I%
1->ValAct
End
End
If ValAct
PMT+1->PMT
End //¤
End //Z
...
End //B
End //A
Disp PMT // ceci est une variable du menu finance
Peut-être ai-je commis une erreur, n'hésitez pas à signaler.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)