pdf - e-book - archive

2.8  Révisions

2.8.1  Problèmes divers

Les corrigés sont visibles sur http://github.com/alexandreMesle/U22_Python/.

Exercice 1 - Nombres impairs

Nous nous intéressons ici à la somme des n premiers nombres impairs.

Question 1 (Exemple)   Quelle est la somme des 4 premiers nombres impairs ?
Question 2 (Pseudo-code)   Écrire une fonction sommeImpairs(n : entier) : entier retournant la somme des n premiers nombres impairs.
Question 3 (Programmation)   Programmer cet algorithme.
Question 4 (Test)   Testez-le avec tous les n de 1 à 20.
Question 5 (Conclusion)   Qu’observez-vous ?

Exercice 2 - Interpolation

Étant donnés deux points A(xA, yA) et B(xB, yB), comment calculer l’équation y = ax + b de la droite Δ passant par les points A et B ?

Question 1 (Exemple)   Quelle est l’équation de la droite passant par les points A(0, 1) et B(1, 2) ?
Question 2 (Coefficient directeur)   Exprimer a en fonction des coordonnées xA, xB, yA et yB de A et B.
Question 3 (Intersection de Δ avec les ordonnées)   Exprimer b en fonction de a et des coordonnées de A.
Question 4 (Pseudo-code)   Écrire deux fonctions interpoleA(xA, yA, xB, yB : réel) : réel et interpoleB(a, xA, yA : réel) : réel retournant les valeurs de a et de b.
Question 5 (Programmation)   Construire un programme demandant la saisie de xA, xB, yA et yB, et affichant les valeurs de a et b.
Question 6 (Test)   Testez-le avec les points A(0, 1) et B(1, 2).
Question 7 (Cas particuliers)   Quels cas particuliers peuvent mettre cet algorithme en échec ? Corrigez le programme pour les prendre en compte.

Exercice 3 - Réglage d’horloge

Une horloge digitale se règle avec deux boutons : un pour passer à l’heure suivante, et un pour passer à la minute suivante. On règle donc l’horloge par pressions successives sur ces deux boutons. Si par exemple l’horloge affiche 11:59 et que l’utilisateur presse le bouton des minutes, alors l’horloge sera réglée sur 11:00.

Question 1 (Exemple)   Si l’horloge affiche 11:22, combien de pressions doivent être effectuées pour passer à 13:15 ?
Question 2 (Pseudo-code)   Écrire un algorithme demandant à l’utilisateur la saisie des heures et minutes de deux moments A et B de la journée. L’algorithme devra par la suite déterminer le nombre de pressions pour régler sur l’heure B une horloge initialement réglée sur l’heure A.
Question 3 (Programmation)   Programmer cet algorithme.
Question 4 (Distance)   Quels sont les cas dans lesquels le nombre de pressions sera maximal ? Est-ce que l’un d’eux peut partir de 11:22 ?

Exercice 4 - Horloge et miroir

Si vous regardez une horloge à aguilles sans chiffres dans un miroir, les positions des aiguilles sont disposées à l’envers. Quel calcul faire pour savoir quelle heure il est sans se tromper ? On supposera que l’aiguille des heures est toujours positionnée de façon exacte sur un des 12 chiffres.

Question 1 (Exemple)   Si l’horloge que vous observez indique 14:37, quelle heure est-il réellement ?
Question 2 (Pseudo-code)   Écrire une procédure prenant en paramètre les heures et minutes d’un moment de la journée et affichant le reflet de cette heure dans le miroir.
Question 3 (Programmation)   Programmer cet algorithme.
Question 4 (Test)   A quels moments de la journée l’horloge affiche-t-elle une heure correcte à travers le miroir ?

Exercice 5 - Nombres amis

Deux nombres sont amis si chacun est égal à la somme des diviseurs stricts de l’autre.

Question 1 (Pseudo-code)   Écrire un algorithme demandant à l’utilisateur la saisie d’un nombre, lui disant si celui-ci a un nombre ami, et si oui lequel.
Question 2 (Programmation)   Programmer cet algorithme.
Question 3 (Test)   Avec quel nombre 220 est-il ami ?
Question 4 (Test)   Avec quel nombre 6 est-il ami ?
Question 5 (Conclusion)   Affichez les 5 plus petits couples de nombres amis.

Exercice 6 - Clé RIB

La clé d’un RIB (Relevé d’identité bancaire) se calcule de la façon suivante :

97 −((89 * codeBanque + 15 * codeGuichet + 3 * numeroComptemod 97)
Question 1 (Pseudo-code)   Écrire un fonction prenant en paramètre des données bancaires et retournant le RIB du compte.
Question 2 (Programmation)   Programmer cette fonction.
Question 3 (Test)   Votre clé RIB est-elle correcte ?

Exercice 7 - Diététique

Un utilisateur possède dans son placard des pâtes en conserves, chaque boîte est numérotée en fonction de la marque. Si par exemple il y a 2 boîtes de Lustucru et 3 boîtes de Barilla, il est possible que les boîtes soient numérotées, 1, 1, 2, 2 et 2. Les numéros choisis sont arbitraires, ce qui importe est que les boîtes aient le même numéro si et seulement si elles sont de la même marque.

Afin de varier les repas, l’utilisateur souhaite éviter de prendre la même boîte de pâtes à deux repas consécutifs. Dans quel ordre consommer les boîtes de pâtes pour ce faire ?

Les numéros des boîtes seront placées dans un tableau passé en paramètre (par référence) à une fonction qui sera chargée d’en modifier l’ordre de sorte que deux numéros identiques ne seront jamais côte à côte.

Nous appliquerons le principe suivant :

On appliquera le même principe à tous les autres éléments. Soit i un indice du tableau :

Question 1 (Exemple)   Appliquez ce principe au tableau suivant : [1, 3, 2, 3, 1, 1, 2, 3, 1]
Question 2 (Pseudo-code)   Écrire en pseudo-code une procédure ordonne(t : tableau de n entiers) appliquant ce principe au tableau t.
Question 3 (Programmation)   Programmez cette procédure et testez-là.
Question 4 (Limites)   Y a-t-il des cas dans lesquels cette procédure ne fonctionne pas ?
Question 5 (Autre algorithme)   Existe-t-il un meilleur algorithme permettant de résoudre ce problème ?