« Programmation C++/Les fonctions » : différence entre les versions

Contenu supprimé Contenu ajouté
m Conjugaison
 
Ligne 348 :
 
=== Exercice 1 ===
Créez une fonction <code>factorielle</code> pour calculer la factorielle d'un entier n.
Elle retourne un entier long.
Créez une fonction non récursive.
{{Boîte déroulante|titre = Aide|contenu =
La factorielle (noté ! en mathématiques) se définit ainsi: :<br />
!1 = 1 = 1<br />
!2 = 2 x 1 = 2<br />
Ligne 360 ⟶ 362 :
long factorielle(int n)
{
long r = 1;
while (n-- > 0)
r *= n;
return r;
}
</syntaxhighlight>}}
Ligne 377 ⟶ 379 :
long factorielle(long n)
{
if (n == 1) return 1;
return n*factorielle(n - 1);
}
</syntaxhighlight>}}
Ligne 392 ⟶ 394 :
En C++, les systèmes <code>callback</code> sont des systèmes qui enregistrent des fonctions, afin de les exécuter en cas d'évènement (comme par exemple si on touche le clavier).
 
Albert n'est pas fort en maths. Il veut un système pour faire des racines carrées, des carréecarrés, des cosinus et des factorielles.
Il utilise l'environnement callback situé dans l'annexe 1.
Cet environnement crée une structure f_maths, qui enregistre une fonction et son symbole mathématique.
Pour utiliser sa calculatrice, il doit enregistrer correctement les fonctions dans le gestionnaire.
Ensuite, le programme interroge l'utilisateur pour entrer le symbole de son opération.
Puis, l'utilisateur entre sa valeur et le programme effectue l'opération.
Compléter le programme en annexe avec la fonction main() uniquement.
{{Boîte déroulante|titre = Annexe 1|contenu =
Système :<syntaxhighlight lang = "cpp">
#include <cmaths>
#include <stdio.h>
Ligne 411 ⟶ 419 :
double factorielle(double n)
{
if (n == 1) return 1;
return n*factorielle(n - 1);
}
 
void enregistrer(fct f, char sy)
{
struct s;
s.fonction = f;
s.symb = sy;
gestionnaire[nb_fct++] = s;
}
 
void executer()
{
char sy;
double val;
printf("Entrer le symbole:\n");
scanf("%c", &sy);
printf("Entrer la valeur:\n");
scanf("%g", &val);
for(int i = 0; i < nb_fct; i++)
if (gestionnaire[i].symb == sy)
{
{
printf("Le résultat est %g.\n", (*gestionnaire[i].fonction)(val);
return;
}
}
printf("Aucune fonction trouvée.\n");
}</syntaxhighlight>}}
{{Boîte déroulante|titre = Aide|contenu =