Exemples

publicité
Exercices résolus
Question # 1.
Un secrétaire doit traiter une pile importante de dossiers. Pour déterminer l’ordre dans
lequel les dossiers seront traités, il attribue à chaque dossier une valeur réelle entre 0 et
10 désignant son importance. Plus cette valeur est élevée, plus le dossier est prioritaire.
Construire un algorithme permettant au secrétaire d’identifier le dossier le plus
prioritaire.
Étape 1.
Conserver le premier dossier du dessus de la pile en retrait.
Étape 2.
Tant et aussi longtemps que la pile de dossiers à parcourir n’est pas vide
Étape 2.1
Si le dossier en retrait est plus prioritaire que celui du
dessus de la pile
alors
ranger le dossier du dessus de la pile dans votre
classeur
sinon ranger le dossier en retrait dans votre classeur,
conserver le dossier du dessus de la pile en retrait.
Étape 3.
Vous pouvez maintenant vous mettre à la tâche et traiter le dossier en
retrait.
Question # 2.
Décrire un algorithme qui vous permet de résoudre le problème suivant :
« Deux amis A et B possèdent chacun un paquet de cartes de joueurs de hockey
où l’on retrouve sur chaque carte une valeur entière désignant le caractère
rarissime de cette carte. Plus cette valeur est élevée, plus la carte de hockey est
rare. B fait le fanfaron et affirme avec conviction qu’il détient la carte la plus rare.
A ne s’en laisse pas imposer et désire vérifier cette affirmation. »
Étape 1.
{ A recherche sa carte la plus rare. }
1.1
A prend dans sa main gauche la première carte de son paquet.
1.2
Tant et aussi longtemps que toutes les cartes de A n’ont pas été
considérées alors
1.2.1
A prend dans sa main droite une carte de son paquet.
1.2.2
Si la carte de la main gauche de A est plus petite que celle de la
main droite alors échanger les 2 cartes.
1.2.3
Mettre en retrait la carte de la main droite de A en constituant un
nouveau paquet.
Étape 2.
{ B recherche sa carte la plus rare. }
2.1
B prend dans sa main gauche la première carte de son paquet.
2.2
Tant et aussi longtemps que toutes les cartes de B n’ont pas été
considérées alors
2.2.1 B prend dans sa main droite une carte de son paquet.
Étape 3.
2.2.2
Si la carte de la main gauche de B est plus petite que celle de la
main droite alors échanger les 2 cartes.
2.2.3
Mettre en retrait la carte de la main droite de B en constituant un
nouveau paquet.
{ A et B comparent leur carte la plus rare. }
Si la carte de la main gauche de B est plus rare que celle de A
alors écrire « B a raison. »
sinon écrire « A a tort. »
Question # 3.
Sachant que les pièces de monnaie mises en circulation au Canada1 sont les suivantes :
2$, 1$, 50¢, 25¢, 10¢, 5¢, 1¢, construire un algorithme (vorace) permettant de rendre la
monnaie exacte à un client tout en lui remettant le nombre minimum de pièces.
La stratégie consiste à choisir à chaque étape la pièce de valeur maximale laquelle est
inférieure ou égale au montant qui reste à rendre au client.
Étape 1.
Lire le montant M d’argent à remettre au client.
Étape 2.
Tant et aussi longtemps que M est plus grand ou égal à 2$
Étape 3.
Étape 4.
Étape 5.
1
2.1
Remettre 2$ au client.
2.2
Retrancher 2$ de M.
Si M est plus grand ou égal à 1$
3.1
Remettre 1$ au client.
3.2
Retrancher 1$ de M.
Si M est plus grand ou égal à 0.50$
4.1
Remettre 0.50$ au client.
4.2
Retrancher 0.50$ de M.
Si M est plus grand ou égal à 0.25$
Voir http://lois.justice.gc.ca/fr/R-9/261980.html .
Étape 6.
Étape 7.
Étape 8.
5.1
Remettre 0.25$ au client.
5.2
Retrancher 0.25$ de M.
Tant et aussi longtemps que M est plus grand ou égal à 0.10$
6.1
Remettre 0.10$ au client.
6.2
Retrancher 0.10$ de M.
Si M est plus grand ou égal à 0.05$
7.1
Remettre 0.05$ au client.
7.2
Retrancher 0.05$ de M.
Tant et aussi longtemps que M est plus grand ou égal à 0.01$
6.1
Remettre 0.01$ au client.
6.2
Retrancher 0.01$ de M.
Question # 4.
Vous avez en votre possession deux piles (la pile A et la pile B) de bulletins d’étudiants
classées en ordre croissant de matricule. Construire un algorithme permettant de
fusionner ces deux piles c’est-à-dire, de construire une nouvelle pile D ordonnée en ordre
croissant de matricule qui renfermera les bulletins des 2 piles de départ.
1. Tant et aussi longtemps que la pile A n’est pas vide et la pile B n’est pas vide,
1.1
1.2
1.3
1.4
2.
Tant et aussi longtemps que la pile A n’est pas vide,
2.1
2.2
3.
Prendre dans la main gauche le bulletin du dessus de la pile A.
Prendre dans la main droite le bulletin du dessus de la pile B.
Placer le bulletin que vous avez dans les mains ayant le plus petit
matricule sur une pile C.
Placer l’autre bulletin sur sa pile originale (A ou B).
Prendre dans la main gauche le bulletin du dessus de la pile A.
Placer ce bulletin sur une pile C.
Tant et aussi longtemps que la pile B n’est pas vide,
3.1 Prendre dans la main gauche le bulletin du dessus de la pile B.
3.2 Placer ce bulletin sur une pile C.
4.
Tant et aussi longtemps que la pile C n’est pas vide,
4.1 Prendre dans la main gauche le bulletin du dessus de la pile C.
4.2 Placer ce bulletin sur une pile D.
Question # 5.
Décrire un algorithme pour résoudre le problème de ce professeur :
«Un professeur enseigne à un groupe de n élèves; il a corrigé le premier examen.
Les notes (entre 0 et 100) des élèves sont maintenant disponibles. Le professeur
voudrait afficher la note minimale et la moyenne des résultats obtenus.»
1. Lire la valeur de n correspondant à la taille du groupe.
2. Initialiser à 101 la variable MIN désignant la note minimale.
3. Initialiser à 0 la variable SOMME désignant la somme des notes.
4. Répétez n fois
4.1 Lire une note A d’un élève.
4.2 Ajouter la note A à la variable SOMME.
4.3 Si A < MIN alors affecter la valeur de A à MIN.
5.
Affichez la note minimale MIN.
6.
Affichez la moyenne des résultats SOMME / n.
Question # 6.
[Tiré de Clicmaths Mathématiques au primaire Sylvio Guay, Jean-Claude Hamel, Steeve
Lemay, 3ième cycle du primaire. Éditions Grand Duc, 2003.]
Un étudiant voit apparaître sur sa calculatrice une série du même chiffre par exemple
999999. La dernière opération effectuée était la multiplication par 7. L’étudiant ne se
souvient plus du nombre qui a été multiplié par 7. Pouvez-vous l’aider ?
L’algorithme prend en entrée un chiffre entre 0 et 9 et affiche le résultat : 142857.
Autre exemple :
la calculatrice affiche 111111; le résultat affiché est alors 15873.
1. Lire un chiffre c entre 0 et 9.
2. Initialiser une variable TERME à la valeur c.
3. Initialiser une variable RESULTAT à la valeur 0.
4. Effectuer la division suivante : TERME / 7 et conservez la partie entière du
résultat dans la variable Q.
5. Calculer l’expression suivante : RESULTAT * 10 + Q et conservez cette
valeur dans la variable RESULTAT.
6. Si 7 n’est pas un facteur de TERME alors
6.1
Calculer l’expression suivante : TERME * 10 + c et conservez cette
valeur dans TERME.
6.2
Retournez à l’étape 4.
7.
Affichez la valeur RESULTAT.
Question # 7.
(i)
Construire un algorithme qui prend en entrée les données suivantes :
-
la longueur n d’une suite de nombres entiers naturels,
-
un nombre entier naturel m,
-
les n nombres entiers naturels,
et détermine si le nombre m fait partie de la suite et correspond à la médiane de
cette suite c’est-à-dire, l’écart entre le nombre d’entiers de la suite inférieurs à m
et le nombre d’entiers supérieurs à m est d’au plus 1.
1.
Lire la valeur de n correspondant à la longueur de la suite.
2.
Lire la valeur de m correspondant à l’éventuelle médiane.
3.
Initialiser une variable Inferieur à 0.
4.
Initialiser une variable Superieur à 0.
5.
Initialiser une variable Trouve à non.
6.
Répétez n fois
Lire un entier naturel a de la suite.
Si a est égale à m alors initialisez Trouve à oui.
Si a est plus petit que m alors ajouter 1 à Inferieur.
Si a est plus grand que m alors ajouter 1 à Superieur.
7.
Si Trouve est égale à oui et l’expression Superieur – Inferieur est
égale à 0, 1 ou -1
alors écrire "Il s’agit de la médiane. "
sinon écrire "Il ne s’agit pas de la médiane. "
(ii)
Calculez le nombre d’opérations élémentaires nécessaires pour exécuter cet
algorithme.
5 + 5 n + 6 opérations élémentaires.
Question # 8.
(i)
Construire un algorithme qui prend en entrée un entier naturel n, calcule
l’expression suivante :
n2
 (i2 – 2 i + 5)
i=1
et affiche le résultat obtenu.
1.
Lire un entier naturel n.
2.
Placer dans m la valeur de n * n.
3.
Placer dans somme la valeur 0.
4.
Pour chaque valeur de i allant de 1 à m
Calculer i * i – 2 * i + 5.
Ajouter le résultat à somme.
5.
Afficher la valeur de somme.
Calculez le nombre d’opérations élémentaires nécessaires pour exécuter cet
algorithme.
(ii)
5+
n2
 (6) = 5 + 6 n2.
i=1
Question # 9.
En mathématiques, un nombre parfait est un nombre entier n strictement supérieur à 1
qui est égal à la somme de ses diviseurs, excluant n.
Exemples
Les 4 premiers nombres parfaits sont connus depuis l'antiquité. Depuis, le total est passé
à 44 nombres parfaits seulement (au 11/09/2006).
Les douze premiers nombres parfaits sont :











6=1+2+3
28 = 1 + 2 + 4 + 7 + 14
496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248
8 128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1 016 + 2 032 + 4 064
33 550 336
8 589 869 056
137 438 691 328
2 305 843 008 139 952 128
2 658 455 991 569 831 744 654 692 615 953 842 176
191 561 942 608 236 107 294 793 378 084 303 638 130 997 321 548 169 216
13 164 036 458 569 648 337 239 753 460 458 722 910 223 472 318 386 943 117
783 728 128

1 447 401 11 546 645 244 279 463 731 260 85 988 481 573 677 491 474 835 889
066 354 349 131 199 152 128
Construire un algorithme qui prend en entrée un entier naturel n et affiche comme résultat
oui ou non selon que n est un nombre parfait ou non.
Étape 1.
Lire un nombre n.
Étape 2.
Si n est plus petit ou égal à 1 alors écrire non.
Étape 3.
Initialiser une variable somme à 0.
Étape 4.
Pour chaque valeur de i allant de 1 à la division entière de n par 2
4.1
Étape 5.
Si i est un facteur de n alors ajouter i à la variable somme.
Si somme est égale à n
alors écrire oui
sinon écrire non.
Étape 6.
Fin de l’algorithme.
Question # 10.
Connaissez-vous le langage baobab ? Celui-ci renferme uniquement les lettres a, b et o.
Chaque mot est séparé du suivant par un espace et une phrase se termine par un point.
Écrire un algorithme qui permet de lire les caractères d’un texte écrit en baobab et
d’afficher la longueur moyenne de chaque mot, la fréquence de chaque lettre et le nombre
de phrases du texte.
Initialiser la variable Nombre_total_de_caracteres à 0.
Initialiser la variable Nombre_de_mots à 0.
Initialiser la variable Nombre_de_phrases à 0.
Initialiser la variable Nombre_de_a à 0.
Initialiser la variable Nombre_de_b à 0.
Initialiser la variable Nombre_de_o à 0.
Tant et aussi longtemps que tous les caractères ne sont pas lus
Lire un caractère du texte dans la variable c.
Si c est différent de l’espace et du point
alors ajouter 1 à Nombre_total_de_caracteres.
Si c est égale à l’espace ou le point
alors
ajouter 1 à Nombre_de_mots
Si c est égale au point
alors
ajouter 1 à Nombre_de_phrases
Si c est égale à la lettre « a »
alors
ajouter 1 à Nombre_de_a
Si c est égale à la lettre « b »
alors
ajouter 1 à Nombre_de_b
Si c est égale à la lettre « o »
alors
ajouter 1 à Nombre_de_o
Afficher la longueur moyenne de chaque mot :
Nombre_total_de_caracteres / Nombre_de_mots,
afficher la fréquence de la lettre a : Nombre_de_a / Nombre_total_de_caracteres,
afficher la fréquence de la lettre b : Nombre_de_b / Nombre_total_de_caracteres,
afficher la fréquence de la lettre o : Nombre_de_o / Nombre_total_de_caracteres,
afficher le nombre de phrases : Nombre_de_phrases.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
Téléchargement