Programeation d'une type de puissance

Signaler
Messages postés
16
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
28 juin 2007
-
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007
-
bon soir à tout le monde





j'ai un problème de la fonction puissance en langage C. Mon problème
est le faite que, je veux programmer en langage C, une fonction qui calcule y^n/2, avec n un entier pas paire ET y un double.


merci mes fréres pour l'aide.

5 réponses

Messages postés
192
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
30 janvier 2008

essayes pow(a, b) de math.h

avec b la puissance.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
Salut,
faut verifier y strictement positif sinon ca va te renvoyer NaN si n n'est pas paire
Messages postés
16
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
28 juin 2007

<meta http-equiv= "Content-Type" content="text/html; charset=UTF-8" />
<meta name="Generator" content="Kate, the KDE Advanced Text Editor" />



merci bc à vos répenses, j'ai réflichi bien à cette fonction "pow"mais j'ai pas de bon résultat.
voilà mon programme;

--------------------------------
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

//#include"init.h"

double fac(int valeur_depart)
{
int valeur;
double factoriel;

factoriel = 1;
valeur = valeur_depart;
while (1)
{ if (valeur < = 1)
break;
factoriel = factoriel * valeur;
valeur--;
} if (valeur_depart 0) factoriel 1;

return factoriel;
}

/*double puissance(double a,float n){ if(n == 0) return(1); return (a*puissance(a,n-1));}*/
main()
{
int n =3,m= 1;
// FILE *bess; double v,x =1/2,u;
u=cos(x);
v=fac(2*m-1)*pow(sqrt(1-x*x),n);

printf("v= %lf\n",v);

}
----------------------------------
la répense est === 1;
------------------------------------
Messages postés
16
Date d'inscription
mardi 24 avril 2007
Statut
Membre
Dernière intervention
28 juin 2007

 pardon je vois que mon message n'est pas claire, alors le le refait:

<meta http-equiv= "Content-Type" content="text/html; charset=UTF-8" /><meta name="Generator" content="Kate, the KDE Advanced Text Editor" />#include<stdio.h>#include<math.h>#include<stdlib.h> //#include"init.h" double fac(int valeur_depart)
{
int valeur;
double factoriel;


factoriel = 1;
valeur = valeur_depart;
while (1)
{ if (valeur < = 1)
break;
factoriel = factoriel * valeur;
valeur--;
}
if (valeur_depart 0) factoriel 1;

return factoriel;
}


int main()
{
int n =3,m=1;
// FILE *bess; double v,x =1/2,u;
u=cos(x);
v=fac(2*m-1)*pow(8./5,n);

printf("v= %lf\n",v);

}

j'ais un problème de résultat c'est 1.
Messages postés
317
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
19 octobre 2007

Salut,

Ton code est un peu dur a lire, tu as du avoir un probleme quand tu l'as copie-colle.

Je ne vois pas ou tu calcules y^n/2 aussi donc l'explication ne colle pas vraiment au code que tu mets, mais bon
Ton probleme c'est que la reponse retournee par le main est 1 alors que ca devrait pas ?
_donc essaye deja de voir si sqrt(1-x*x) te renvoie bien la valeur voulue puis essaye de voir si y'a pas un probleme
de conversion en int qui se cache.
Et finalement, verifie ton printf
(%lf c'est pour les doubles ? tu es sur ?)

__ au passage, pour le moment, l'initialisation de x est en commentaires__

=