Exercice 39
Énoncé
Écrire une fonction qui fournit en valeur de retour la somme des éléments d’un
tableau de flottants transmis, ainsi que sa dimension, en argument.
É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 son adresse. Quant à la
transmission par référence, elle n’a pas de signification dans ce cas. Nous n’avons
donc aucun choix en ce qui concerne le mode de transmission de notre tableau.
En ce qui concerne le nombre d’éléments (de type int), nous le transmettrons
classiquement par valeur. L’en-tête de notre fonction pourra se présenter sous l’une des
formes suivantes :
float somme (float t[], int n)
float somme (float * t, int n)
float somme (float t[5], int n)// déconseillé car laisse croire que t
// est de dimension fixe 5
En effet, la dimension réelle de t n’a aucune incidence sur les instructions de la
fonction elle-même (elle n’intervient pas dans le calcul de l’adresse d’un élément du
tableau
1 et elle ne sert pas à « allouer » un emplacement puisque le tableau en question
aura été alloué dans la fonction appelant somme).
Voici ce que pourrait être la fonction demandée :
float somme (float t[], int n)// on peut écrire somme (float * t,...
// ou encore somme (float t[4], ...
// mais pas somme (float t[n], ...
{ int i ;
float s = 0 ;
for (i=0 ; i
s += t[i] ; // on pourrait écrire s += * (t+i) ;
return s ;
}
Pour ce qui est du programme d’utilisation de la fonction somme, on peut, là encore,
écrire le « prototype » sous différentes formes :
float somme (float [], int ) ;
float somme (float * , int ) ;
float somme (float [5], int ) ;// déconseillé car laisse croire que t
// est de dimension fixe 5
85
Énoncé
Écrire une fonction qui fournit en valeur de retour la somme des éléments d’un
tableau de flottants transmis, ainsi que sa dimension, en argument.
É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 son adresse. Quant à la
transmission par référence, elle n’a pas de signification dans ce cas. Nous n’avons
donc aucun choix en ce qui concerne le mode de transmission de notre tableau.
En ce qui concerne le nombre d’éléments (de type int), nous le transmettrons
classiquement par valeur. L’en-tête de notre fonction pourra se présenter sous l’une des
formes suivantes :
float somme (float t[], int n)
float somme (float * t, int n)
float somme (float t[5], int n)// déconseillé car laisse croire que t
// est de dimension fixe 5
En effet, la dimension réelle de t n’a aucune incidence sur les instructions de la
fonction elle-même (elle n’intervient pas dans le calcul de l’adresse d’un élément du
tableau
1 et elle ne sert pas à « allouer » un emplacement puisque le tableau en question
aura été alloué dans la fonction appelant somme).
Voici ce que pourrait être la fonction demandée :
float somme (float t[], int n)// on peut écrire somme (float * t,...
// ou encore somme (float t[4], ...
// mais pas somme (float t[n], ...
{ int i ;
float s = 0 ;
for (i=0 ; i
return s ;
}
Pour ce qui est du programme d’utilisation de la fonction somme, on peut, là encore,
écrire le « prototype » sous différentes formes :
float somme (float [], int ) ;
float somme (float * , int ) ;
float somme (float [5], int ) ;// déconseillé car laisse croire que t
// est de dimension fixe 5
85
