anek971
Messages postés34Date d'inscriptiondimanche 23 novembre 2003StatutMembreDernière intervention 6 juillet 2008
-
11 déc. 2003 à 04:56
anek971
Messages postés34Date d'inscriptiondimanche 23 novembre 2003StatutMembreDernière intervention 6 juillet 2008
-
11 déc. 2003 à 14:36
Bonjour ,ben avt de demander de l'aide j'ai chercher sur le forum mais ya pas le programme en c.
Et en faite c juste pr une verification car mon programme ne marche po et j'ai exam vendredi :).
sachant ke l'on doit effectuer le calcul suivant (-1)^n*x^2n/(2n)! tant que <= a epsilon=0.00001
#include<stdio.h>
double puis(double x, int n)
{
double a,y;
int b,i;
a=x;
b=n;
y=1.0;
i=0;
if(b==0)
return 1;
while(i<b)
{
y=y*a;
i++;
}
int fact (int b)
{
int a,r,i;
i=1;
r=1;
a=b;
if(a==0)
return 1;
while (i<b)
{
r=r*i;
i++;
}
return r;
}
int main (void)
{
double x,y,epsilon;
int n;
n=1;
y=1;
printf("tapez la valeur de x:\);
scanf("%lf",&x);
while(puis(-1,n)*puis(x,2*n)/fact(2*n)<=epsilon)
{
y=y+puis(-1,n)*puis(x,2*n)/fact(2*n);
n++;
}
printf("cos(%lf)=%lf",x,y);
}
pitié aidez moi et si un mail comme le mie a déjà été posté mille excuse mais pitiez de l'aide.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 11 déc. 2003 à 08:53
1) Dans mes sources tu trouveras comment on calcule un cos, fact et pow (la source intitulée qqc comme "MATH.H reprogrammé")
2) Ton code est rempli de fautes...ta fonction puissance est fausse (elle renvoie en fait x^(N-1) ). Tes fonctions sont mal concues puisque tu utilises while à tout bout de champ ce qui n'est pas la bonne solution...
ton test <=epsilon devrait être >epsilon : tant qu'on est superieur à epsilon on cherche plus petit.
Bref...voila comment tu aurais pu faire (j'ai refait tes fonctions puis avec fact mais j'ai laissé l'esprit de ton main)
double puis(double x, int n)
{
double res = 1;
for (int i=0; i<n; i++)
res *= x;
return res;
}
int fact (int b)
{
int res = 1;
for (int i=1; i<=b; i++)
res *= i;
Sur le principe il faudrait aussi éviter de calculer 2 fois puis(-1,n)*puis(x,2*n)/fact(2*n). Et donc de le mettre dans une variable mais bon...je ne vais pas refaire ce qui est deja dans mes sources !
Je vais te donner un bon conseil pour savoir quand il faut utiliser while et quand il faut utiliser for :
On utilise for "quand on sait d'où on part et où on termine". Sinon on utilise while.
Par exemple pour la factorielle, onsait quand par de i=1 et qu'on s'arrete à i=N...donc for
Pour la puissance on sait qu'on va faire N itérations (donc on part de 0 et on va jusqu'à N-1 par exemple)
Par contre on ne peut pas savoir à l'avance combien de temps on va mettre pour arriver à moins de epsilon => il faut utiliser while.
Voila. En esperant que ces conseils te fassent reussir ton exam !
On ne force pas une curiosité, on l'éveille. .................................................Daniel Pennac
anek971
Messages postés34Date d'inscriptiondimanche 23 novembre 2003StatutMembreDernière intervention 6 juillet 2008 11 déc. 2003 à 14:36
Merci beaucoup garslouche ;).
j'avoe ca fait pas ltps ke je programme bon ok ca se voit lol.
mais le truc c ke ds mon enoncé j'étais obliger d'utiliser while d'ou mon prog.(Y avais tant def aute ke ca !!arfffff).
En tout cas encore merci.