Présentation de l'algorithme :

Renseigner le nombre d'élèves par classe (n), puis le nombre de classes (N).
L'algorithme simulera N classes de n élèves avec leur date de naissance (nombre aléatoire choisi entre 1 et 365) et retournera la fréquence de l'événement 'avoir au moins deux élèves avec deux dates de naissance identiques dans une classe'.
L'affichage des dates de naissance ralentit l'exécution de l'algorithme.

Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)
Remarque : si les messages "Algorithme lancé" et "Algorithme terminé" n'apparaissent pas au bout d'un moment dans la zone ci-dessous, c'est que l'algorithme contient une erreur.

Résultats :

Code de l'algorithme :
1     VARIABLES
2       i EST_DU_TYPE NOMBRE
3       date_naissance EST_DU_TYPE LISTE
4       j EST_DU_TYPE NOMBRE
5       ok_liste EST_DU_TYPE LISTE
6       k EST_DU_TYPE NOMBRE
7       somme EST_DU_TYPE NOMBRE
8       proba EST_DU_TYPE NOMBRE
9       nb_classes EST_DU_TYPE NOMBRE
10      nb_eleves EST_DU_TYPE NOMBRE
11    DEBUT_ALGORITHME
12      AFFICHER "Combien de classes ?"
13      LIRE nb_classes
14      AFFICHER nb_classes
15      AFFICHER " classe(s) au total."
16      AFFICHER "Combien d'élèves par classe ?"
17      LIRE nb_eleves
18      AFFICHER nb_eleves
19      AFFICHER " élèves par classe."
20      POUR k ALLANT_DE 1 A nb_classes
21        DEBUT_POUR
22        AFFICHER "Classe n° "
23        AFFICHER k
24        AFFICHER " :"
25        ok_liste[k] PREND_LA_VALEUR 0
26        POUR i ALLANT_DE 1 A nb_eleves
27          DEBUT_POUR
28          date_naissance[i] PREND_LA_VALEUR floor(random()*365+1)
29          AFFICHER date_naissance[i]
30          AFFICHER " ; "
31          POUR j ALLANT_DE 1 A i-1
32            DEBUT_POUR
33            SI (date_naissance[j]==date_naissance[i]) ALORS
34              DEBUT_SI
35              AFFICHER "deux dates identiques !"
36              ok_liste[k] PREND_LA_VALEUR ok_liste[k]+1
37              FIN_SI
38            FIN_POUR
39          FIN_POUR
40        SI (ok_liste[k]==0) ALORS
41          DEBUT_SI
42          AFFICHER "bilan classe n° "
43          AFFICHER k
44          AFFICHER " : pas de dates identiques !"
45          FIN_SI
46          SINON
47            DEBUT_SINON
48            ok_liste[k] PREND_LA_VALEUR 1
49            AFFICHER "bilan classe n° "
50            AFFICHER k
51            AFFICHER " : au moins deux dates identiques !!!"
52            FIN_SINON
53        FIN_POUR
54      somme PREND_LA_VALEUR 0
55      POUR k ALLANT_DE 1 A nb_classes
56        DEBUT_POUR
57        somme PREND_LA_VALEUR somme+ok_liste[k]
58        FIN_POUR
59      AFFICHER "Nb de classes avec au moins 2 dates id. : "
60      AFFICHER somme
61      AFFICHER " classe(s) sur "
62      AFFICHER nb_classes
63      AFFICHER "."
64      AFFICHER "Fréquence correspondante : "
65      proba PREND_LA_VALEUR somme/nb_classes*100
66      AFFICHER proba
67      AFFICHER " %"
68    FIN_ALGORITHME