---
jupytext:
  text_representation:
    extension: .md
    format_name: myst
    format_version: 0.13
kernelspec:
  display_name: C++17
  language: C++17
  name: xcpp17
---

+++ {"tags": ["solution"]}

# Exercice : Appel de procédures

:::{attention}
Cet exercice est légèrement différent de celui qui a été vu en TD.
:::

1.  Dans le fichier `permuter.cpp` fourni, définissez la procédure
    `ordonner` qui prend deux variables $a$ et $b$ et échange leur
    contenu si $a>b$. On impose d'appeler la procédure suivante :

    ``` cpp
    void permuter(int &c, int &d) {
        int temp;
        temp = c; c = d; d = temp; 
    }
    ```
     
    BEGIN SOLUTION
     
    :::{literalinclude} permuter.cpp
    :start-after: BEGIN SOLUTION ordonner
    :end-before: END SOLUTION ordonner
    :::
     
    END SOLUTION
     
    :::{admonition} Notes aux enseignants

    Certains étudiants ne respectent pas la consigne et modifient
    `permuter` plutot que d'écrire une nouvelle procédure ordonner qui
    appelle permuter. Leur dire que le respect des consignes est
    important, non seulement en partiel et examen, mais aussi dans la
    «vraie vie» : si les développeurs de respectent pas les
    spécifications des fonctions, ensuite quand on compose un logiciel
    à partir de ces fonctions, ça buggue...

    :::

2.  Définissez une fonction `main` qui utilise la procédure
    `ordonner`, d'abord avec un appel pour classer deux variables,
    puis avec trois appels comme en TD, pour classer trois variables.

    BEGIN SOLUTION
     
    :::{literalinclude} permuter.cpp
    :start-after: BEGIN SOLUTION main
    :end-before: END SOLUTION main
    :::
     
    END SOLUTION
