Methodes
Résolu
ss10
Messages postés
8
Statut
Membre
-
jisisv Messages postés 3678 Statut Modérateur -
jisisv Messages postés 3678 Statut Modérateur -
bonsoir,
voici l'enoncé de mon probleme
je veux testez la methode d'implémentation de la fonction puissance :
static double pow(double x,int n)
cette methode renvois la valeur de x elevé a la puissance n.(n est entier positif ou négatif ou nul)
ya t'il qulqu'un qui peut m'aider
merci
voici l'enoncé de mon probleme
je veux testez la methode d'implémentation de la fonction puissance :
static double pow(double x,int n)
cette methode renvois la valeur de x elevé a la puissance n.(n est entier positif ou négatif ou nul)
ya t'il qulqu'un qui peut m'aider
merci
2 réponses
-
-
Utilise la méthode de Horner.
En C par exmple:johand@osiris: ~/src/CCM/C $ cat powint.c #include <stdlib.h> #include <stdio.h> float powi(float base, int pow) { float res = 1.0; float facteur = base; if (pow < 0) { facteur = 1.0 / base; pow = -pow; } while(pow) { if(pow & 1) { res = res * facteur; } facteur = facteur * facteur; pow = pow >> 1; } return res; } int main(int argc, char *argv[]) { float f; int p; if(argc >=3) { f = atof(argv[1]); p = atoi(argv[2]); printf("%f to the power %d is %f\n", f, p , powi(f, p)); return EXIT_SUCCESS; } else { fprintf(stderr, "Usage is %s base power\n", argv[0]); return EXIT_FAILURE; } } johand@osiris: ~/src/CCM/C $ gcc -Wall -o powint powint.c johand@osiris: ~/src/CCM/C $ ./powint 5 -3 5.000000 to the power -3 is 0.008000 johand@osiris: ~/src/CCM/C $ ./powint 0.3 4 0.300000 to the power 4 is 0.008100
Ceci permet de réduire la complexité d'un ordre O(n²) à un ordre O(n). n étant l'argument exposant de la fonction.
Je n'ai pas traité toutes les conditions d'erreur de atoi et atof.
Gates gave ^H sold you the windows.
GNU gave us the whole house.(Alexandrin)