---
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 : Accès directs

Le principal intérêt d'un tableau est l'efficacité de l'accès direct à
n'importe quel élément. Vous allez maintenant définir deux fonctions
pour, respectivement, lire et modifier n'importe quelle valeur
présente dans le tableau à partir de son index. On supposera ici que,
si l'utilisateur fournit un index invalide, rien ne doit être fait.

1.  Définissez tout d'abord une fonction qui renvoie la valeur
    présente à un index donné, ou $-1$ si l'index est invalide.

    ```cpp
    int vecteur_get(vecteur *v, int index);
    ```

    BEGIN SOLUTION

    ```cpp
    int vecteur_get(vecteur *v, int index) {
        if (index >= 0 && index < v->count) {
            return v->data[index];
        } else {
            return -1;
        }
    }
    ```

    END SOLUTION

2.  Définissez ensuite une fonction permettant de changer la valeur à
    un index donné:

    ```cpp
    void vecteur_set(vecteur *v, int index, int val);
    ```

    BEGIN SOLUTION

    ```cpp
    void vecteur_set(vecteur *v, int index, int val) {
        if (index >= 0 && index < v->count) {
            v->data[index] = val;
        }
    }
    ```

    END SOLUTION
