Exercice 40
Énoncé
Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale
et la valeur minimale d’un tableau d’entiers (à un indice) de taille quelconque. On
prévoira 4 arguments : le tableau, sa dimension, le maximum et le minimum. Pour
chacun d’entre eux, on choisira le mode de transmission le plus approprié (par
valeur ou par référence). Dans le cas où la transmission par référence est nécessaire,
proposer deux solutions : l’une utilisant effectivement cette notion de référence,
l’autre la « simulant » à l’aide de pointeurs.
Écrire un petit programme d’essai.
En C++, par défaut, les arguments sont transmis par valeur. Mais, dans le cas d’un
tableau, cette valeur, de type pointeur, n’est rien d’autre que l’adresse du tableau. Quant
à la transmission par référence, elle n’a pas de signification dans ce cas. Nous n’avons
donc aucun choix concernant le mode de transmission de notre tableau.
En ce qui concerne le nombre d’éléments du tableau, on peut indifféremment en
transmettre l’adresse (sous forme d’un pointeur de type int *), ou la valeur ; ici, la
seconde solution est la plus appropriée, puisque la fonction n’a pas besoin d’en
modifier la valeur.
En revanche, en ce qui concerne le maximum et le minimum, ils ne peuvent pas être
transmis par valeur, puisqu’ils doivent précisément être déterminés par la fonction. Il
faut donc obligatoirement prévoir de passer :
soit des références. L’en-tête de notre fonction se présentera ainsi :
void maxmin (int t[], int n, int & admax, int & admin)
soit des pointeurs sur des float. L’en-tête de notre fonction se présentera ainsi :
void maxmin (int t[], int n, int * admax, int * admin)
L’algorithme de recherche de maximum et de minimum peut être calqué sur celui de
l’exercice 39, en remplaçant max par *admax et min par *admin. Voici ce que pourrait être
notre fonction :
avec transmission par référence :
87
Énoncé
Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale
et la valeur minimale d’un tableau d’entiers (à un indice) de taille quelconque. On
prévoira 4 arguments : le tableau, sa dimension, le maximum et le minimum. Pour
chacun d’entre eux, on choisira le mode de transmission le plus approprié (par
valeur ou par référence). Dans le cas où la transmission par référence est nécessaire,
proposer deux solutions : l’une utilisant effectivement cette notion de référence,
l’autre la « simulant » à l’aide de pointeurs.
Écrire un petit programme d’essai.
En C++, par défaut, les arguments sont transmis par valeur. Mais, dans le cas d’un
tableau, cette valeur, de type pointeur, n’est rien d’autre que l’adresse du tableau. Quant
à la transmission par référence, elle n’a pas de signification dans ce cas. Nous n’avons
donc aucun choix concernant le mode de transmission de notre tableau.
En ce qui concerne le nombre d’éléments du tableau, on peut indifféremment en
transmettre l’adresse (sous forme d’un pointeur de type int *), ou la valeur ; ici, la
seconde solution est la plus appropriée, puisque la fonction n’a pas besoin d’en
modifier la valeur.
En revanche, en ce qui concerne le maximum et le minimum, ils ne peuvent pas être
transmis par valeur, puisqu’ils doivent précisément être déterminés par la fonction. Il
faut donc obligatoirement prévoir de passer :
soit des références. L’en-tête de notre fonction se présentera ainsi :
void maxmin (int t[], int n, int & admax, int & admin)
soit des pointeurs sur des float. L’en-tête de notre fonction se présentera ainsi :
void maxmin (int t[], int n, int * admax, int * admin)
L’algorithme de recherche de maximum et de minimum peut être calqué sur celui de
l’exercice 39, en remplaçant max par *admax et min par *admin. Voici ce que pourrait être
notre fonction :
avec transmission par référence :
87
