« Introduction générale à la programmation/Pointeurs » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 128 :
}}
 
* Exemple, testé sous Code Block (Windows,Linux).
 
* Exemple, testé sous Code Block (Windows,Linux).
 
* Passer deux pointeurs de fonctions à une fonction.
* Ici on passe les deux pointeurs f et g à la fonction fog.
* "a" est la variable de travail.
* t = f1_o_f2(f,g,a);
 
* Ici on passe les deux pointeursfonctions f et g à la fonction fogf1_o_f2().
* La même fonction peut calculer gof et fog.
 
<source lang="c">
Ligne 146 ⟶ 145 :
 
/* ------ Fonction f ------------ */
double f(double x){return( pow(x,2.));}
double x)
{
return( pow(x,2.));
}
/* ------------------------------ */
char feq[] = "x**2";
Ligne 156 ⟶ 151 :
 
/* ------ Fonction g ------------ */
double g(double x){return(2.0*x + 3.0);}
double x)
{
return( 2.0*x + 3.0);
}
/* ------------------------------ */
char geq[] = "2.0*x + 3.0";
Ligne 166 ⟶ 157 :
 
 
/* -Fonction fog (fg suivie de gf)-*/
double f1_o_f2(
double (*P_f1)(double x),/* Pointeur pour la première fonction */
double (*P_f2)(double x),/* Pointeur pour la deuxième fonction */
Ligne 181 ⟶ 172 :
int main(void)
{
double a = 2.0;
double t;
 
printf(" f : x-> %s\n", feq);
Ligne 188 ⟶ 178 :
printf(" \n\n");
 
a = 2.;
 
printf(" f(g(%.0f) ) = %6.3f,1f\n ", a, f1_o_f2(f,g (,a));
printf(" \ng(f(%.0f)) = %6.1f\n", a, f1_o_f2(g,f,a));
 
t = f1_o_f2(f,/* Le nom de la fonction */
g,/* est un pointeur (f,g) */
a
);
 
 
printf(" f(g(%.0f)) = %6.3f\n", a, t);
 
printf("\n\n Press return to continue.\n");
Ligne 215 ⟶ 197 :
f : x-> x**2
g : x-> 2.0*x + 3.0
 
f(g(2)) = 749.0000
f(g(f(2)) = 4911.0000
 
f(g(2)) = 49.000
 
Press return to continue.
 
Pour approfondir ce travail : [[Mathc_Home_Edition_t01/Gnuplot]]
 
 
{{Bas de page