Algorithmie
-
MMimyy dernière édition par
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.
FinTraduire 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
0Algorithme 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 !
-
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é.