Algorithmie


  • M

    Bonjour,

    J'ai un devoir maison a faire où il y a un algorithme a faire sur AlgoBox, mais il ne fonctionne pas. Voici l’énoncé de mon exercice :

    "On demande à 100 personnes d'indiquer leurs loisir préféré parmi "faire du sport", "utiliser son ordinateur" et "lire un livre" :

    • Il y a 40% de femmes interrogées;
    • 35% des personnes interrogées préfèrent lire un livre;
    • 60% des hommes préfèrent faire du sport;
    • 10% des femmes préfère utiliser leur ordinateur;
    • Le nombre de femmes préférant lire est égale à la moitié du nombre des hommes préférant faire du sport. "

    Il y a quelques questions aux quelles j'ai déjà répondu, puis :

    "L'organisme de sondage attribue un numéro à chaque personne interrogée et interroge de nouveau des personnes selon l'algorithme suivant :

    Variables : N,K,L,M, I, cinq nombres entiers.
    Début
    Affecter à K, L et M la valeur 0
    Pour I allant de 1 à 10;
    | Affecter à N un nombre aléatoire entre 1 et 100.
    | Si 1≤N≤54
    | | Alors affecter à K la valeur K+1.
    | | Sinon :
    | | Si 55≤N≤65
    | | | Alors affecter à L la valeur L+1.
    | | | Sinon affecter à M la valeur M+1
    | | Fin Si
    | Fin Si
    Fin Pour
    Afficher K, L, M.
    Fin

    Traduire cet algorithme avec le logiciel AlgoBox, le tester. "

    Voilà ma traduction :

    "1 VARIABLES :
    2 N EST_DU_TYPE NOMBRE
    3 K EST_DU_TYPE NOMBRE
    4 L EST_DU_TYPE NOMBRE
    5 M EST_DU_TYPE NOMBRE
    6 I EST_DU_TYPE NOMBRE
    7 DÉBUT_ALGORITHME
    8 K PREND_LA_VALEUR 0
    9 L PREND_LA_VALEUR 0
    10 M PREND_LA_VALEUR 0
    11 POUR I ALLANT_DE 1 A 10
    12 DEBUT_POUR
    13 N PREND_LA_VALEUR floor(random()*100+1)
    14 AFFICHER "Variable N"
    15 AFFICHER N
    16 SI (1<=N<=54) ALORS
    17 DEBUT_SI
    18 K PREND_LA_VALEUR K+1
    19 FIN_SI
    20 SINON
    21 DEBUT_SINON
    22 SI (55<=N<=65) ALORS
    23 DEBUT_SI
    24 L PREND_LA_VALEUR L+1
    25 FIN_SI
    26 SINON
    27 DEBUT_SINON
    28 SI (66<=N<=100) ALORS
    29 DEBUT_SI
    30 M PREND_LA_VALEUR M+1
    31 FIN_SI
    32 FIN_SINON
    33 FIN_SINON
    34 FIN_POUR
    35 AFFICHER "Variable K"
    36 AFFICHER K
    37 AFFICHER "Variable L"
    38 AFFICHER L
    39 AFFICHER "Variable M"
    40 AFFICHER M
    41 FIN_ALGORITHME "

    et j'obtiens toujours K=10; L=0; M=0 :
    Algorithme lancé
    Variable N
    48
    Variable N
    97
    Variable N
    84
    Variable N
    20
    Variable N
    85
    Variable N
    69
    Variable N
    28
    Variable N
    30
    Variable N
    10
    Variable N
    15
    Variable K
    10
    Variable L
    0
    Variable M
    0

    Algorithme terminé

    J'ai essayé d'écrire l'algorithme de plusieurs façons, mais le résultat reste toujours le même. Je ne comprends pas pourquoi. Et lorsque je lance le mode "pas à pas", je me rend compte qu'il va jusqu'à la ligne 19, puis passe à la 34 sans passer dans les autres. Et encore une fois je ne comprends pas pourquoi.

    Le texte est très long a cause de l'algorithme, mais si quelqu'un pouvait m'aider, ce serai très gentil.
    Merci d'avance !


  • mtschoon

    Bonjour,

    Effectivement , tes boucles ne fonctionnent pas.

    Je vois au moins deux erreurs.

    Le "FIN_SI" de la ligne 25 , qui correspond au "DEBUT_SI" de la ligne 23 est mal placé . Il doit être beaucoup plus bas ( regarde l'algorithme de l'énoncé ) pour avoir des boucles imbriquées.

    De plus , la ligne 28 est à supprimer : elle fausse tout.
    Regarde la "logique" de l'algorithme de l'énoncé.

    En bref , tes boucles imbriquées doivent correspondre exactement aux boucles imbriquées de l'algorithme très clair donné dans ton énoncé.


Se connecter pour répondre