| |
• Les tableaux unidimentionnels comme paramètres formels. Exemple
Définition d’un tableau unidimensionnel comme paramètre formel:
- mode commun:
type_d’éléments nom_du_tableau[]
Exemple :
int x[], double y[];
- définition d’un tableau comme paramètre formel par pointeur:
type_d’éléments * p;
Exemple :
int * p, double *z;
En ces deux cas les paramètres réels correspondants sont des noms des tableaux. On doit définir encore le nombre d’éléments du tableau.
Exemple: Trouver le plus grand diviseur commun d’éléments d’un tableau. Ecrire la procédure readArr pour acquisition de tableau, la procédure writeArr pour affichage et la fonction gcd qui trouve le plus grand diviseur d’éléments du tableau.
#include < iostream.h >
// fonction gcd
int gcd(int a, int b)
{
while(a!=b)
if(a > b) a = a-b;
else b = b-a;
return a;
}
// procédure readArr
void readArr(int m, int arr[])
{
for (int i=0;I < m;i++)
{
cout<<"arr["<< i <<"] = ";
cin>> arr[i];
}
}
// procédure writeArr
void writeArr(int m, int arr[])
{ for(int i=0;i < m;i++)
cout<<"arr["<< i <<"] = "<< arr[i]<< endl;
}
int main()
{
int n, a[100];
cout<<" Introduire le nombre d'éléments du tableau a - n : ";
cin>> n;
readArr(n,a);
cout<<"Le tableau: "<< endl;
writeArr(n, a);
int x = a[0];
for (int i=1;i < n;i++)
x = gcd(x, a[i]);
cout<<" gcd = "<< x<< endl;
return 0;
}
L’exemple montre que les procédures readAr et writeArr fonctionnent directement avec des tableaux. Le changement des tableaux après l’acquisition dans la procédure readArr est conservé et visible dans la fonction main() .
Exemple. Dans la procédure suivante le tableau est défini comme paramètre formel à l’aide d’un pointeur:
void readArr(int m, int *p)
{
for(int i=0;i < m;i++)
{
cout<<"arr["<< i <<"] = ";
cin>> *p++;
}
L’appel de la procédure se fait de la même manière:
readArr(n,a);.
|
|