Vidéo 32 : while : deux exercices

\(\newcommand{\ds}{\displaystyle}\) \(\newcommand{\Frac}{\ds\frac}\) \(\renewcommand{\r}{\mathbb{ R}}\) \(\newcommand{\C}{\mathbb{ C}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\z}{\mathbb{ Z}}\) \(\newcommand{\Q}{\mathbb{ Q}}\) \(\newcommand{\N}{\mathbb{ N}}\) \(\newcommand{\n}{\mathbb{ N}}\) \(\newcommand{\ol}{\overline}\) \(\newcommand{\abs}[1]{\left| \,{#1} \right|}\) \(\newcommand{\pv}{\;;\;}\) \(\newcommand{\ens}[1]{\left\{ {#1} \right\}}\) \(\newcommand{\mens}[1]{\setminus\left\{ {#1} \right\}}\) \(\newcommand{\Par}[1]{\left({#1}\right)}\)

Vidéo 32 : while : deux exercices

Diviser par deux ou retirer 1

Observez le motif ci-dessous formé de 10 entiers. On part d’un entier \(a> 0\), ici \(a=81\), et on construit une suite d’entiers ainsi :

81 80 40 20 10 5 4 2 1 0.

Le procédé de construction est défini ainsi :

  • si l’entier \(x\) est pair, le successeur de \(x\) de la suite est la moitié de \(x\)
  • sinon, ce successeur est \(x-1\) ;
  • la suite se termine dès qu’un élément de la suite vaut 0.

Par exemple, dans la suite ci-dessus, le successeur de 80 est 40 car 80 est pair et que sa moitié est 40, et de même le successeur de 5 est 4 car 5 est impair et que \(4=5-1\).

  1. On vous donne un entier \(a\geq 0\) et on vous demande d’afficher la suite générée à partir de \(a\) et de calculer la longueur de la suite ainsi générée. Par exemple, si \(a=79\) vous devez afficher la suite suivante :

    79 78 39 38 19 18 9 8 4 2 1 0
    

    et la longueur à calculer est de 12.

  2. Parmi toutes les listes commençant par un entier entre 0 et 1000, quelle est la longueur maximale d’une suite ?

Alternance de parité, version while

On donne une liste L d’entiers et on demande de créer un booléen alterneParite valant True si les éléments de L se suivent en alternant de parité et False sinon. On utilisera une boucle while. Voici des exemples de comportements attendus :

L Alternance de parité
[81, 32, 9, 12] True
[32, 9, 32, 65] True
[32, 9, 31, 82] False
[81] True