---
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 : Introduction

La fonction suivante renvoie un entier positif donné par
l'utilisateur :

``` cpp
int lit_positif() {
    int resultat;
    do {
		cout << "Saisissez un entier positif : ";
        cin >> resultat;
    } while (resultat < 0);
    return resultat;
}
```

1.  Dans le fichier `lit_positif.cpp` fourni, définissez une variante
    de la fonction `lit_positif` ci-dessus pour en faire une procédure
    avec deux résultats : l'entier positif lu et le nombre d'essais de
    l'utilisateur.

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

2.  Complétez le programme principal `main` pour qu'il utilise la
    procédure précédente puis affiche l'entier lu et le nombre
    d'erreurs. Attention, bien respecter l'énoncé : c'est le `main`
    qui doit faire les affichages des résultats, pas la procédure !

    BEGIN SOLUTION

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

    END SOLUTION

3.  Compilez et exécutez le programme, et mettez le au point jusqu'à
    ce qu'il soit correct.

:::{admonition} Notes aux enseignants

Ne pas hésiter à marteler qu'une procédure a `void` comme type de
retour. De plus, beaucoup d'étudiants ne sont pas très logiques dans
la réalisation de leur procédure.  En particulier, certains étudiants
font l'initilisation de la variable du nombre d'erreur dans le
programme principal au lieu de la faire dans la procédure.

Un certain nombre d'étudiants avancent dans le TP sans se rendre
compte de leurs erreurs.  Ne pas hésiter à passer vérifier l'exercice
1 de tous vos étudiants, même ceux qui avancent vite.

:::

:::{attention}

Dans toute la suite du TP, veillez comme ci-dessus à compiler et
exécuter vos programmes au fur et à mesure des étapes pour vous
assurer qu'ils sont au point.

:::
