Problème créer une fonction sinus
Fermé
Dhumbledore
Messages postés
1
Date d'inscription
lundi 1 avril 2013
Statut
Membre
Dernière intervention
1 avril 2013
-
1 avril 2013 à 17:16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 avril 2013 à 17:40
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 avril 2013 à 17:40
A voir également:
- Problème créer une fonction sinus
- Fonction si et - Guide
- Créer un compte google - Guide
- Créer un compte gmail - Guide
- Comment créer un groupe whatsapp - Guide
- Créer une adresse hotmail - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
Modifié par fiddy le 1/04/2013 à 17:41
Modifié par fiddy le 1/04/2013 à 17:41
Plein de choses à dire :
scanf("%f%f",&a,&b);
a et b sont de type double, donc %lf dans le scanf. Et n'oublie pas l'espace entre les deux.
Ce qui donne : scanf("%lf %f",&a, &b);
if((nombre)==0)
On ne compare pas comme ça un nombre double. Il faut vérifier que la différence est suffisamment petite (inférieur à EPSILON).
Votre fonction "factorielle" est correcte mais peut être simplifiée.
double sinus=0,i;
Là, tu déclares i en tant que double. Il faut qu'il soit de type entier (par exemple : int), ce n'est pas qu'une question de goût mais aussi de précision. D'une manière générale, il vaut mieux éviter de tout déclarer sur une ligne. Une ligne par idée (là c'est une question de style).
sinus+=(float)(c*d)/factorielle(2*i + 1);
Pourquoi caster en un double en float ??? Enlève ce cast, ça sera mieux.
printf("sinus (%.2lf) a %d pres = %.2lf \n",i,k,sinus(i,k));
Dans les printf, c'est %f qu'il faut mettre. Donc %.2f, etc.
Courage :-)
Cdlt,
Google is your friend
scanf("%f%f",&a,&b);
a et b sont de type double, donc %lf dans le scanf. Et n'oublie pas l'espace entre les deux.
Ce qui donne : scanf("%lf %f",&a, &b);
if((nombre)==0)
On ne compare pas comme ça un nombre double. Il faut vérifier que la différence est suffisamment petite (inférieur à EPSILON).
Votre fonction "factorielle" est correcte mais peut être simplifiée.
double sinus=0,i;
Là, tu déclares i en tant que double. Il faut qu'il soit de type entier (par exemple : int), ce n'est pas qu'une question de goût mais aussi de précision. D'une manière générale, il vaut mieux éviter de tout déclarer sur une ligne. Une ligne par idée (là c'est une question de style).
sinus+=(float)(c*d)/factorielle(2*i + 1);
Pourquoi caster en un double en float ??? Enlève ce cast, ça sera mieux.
printf("sinus (%.2lf) a %d pres = %.2lf \n",i,k,sinus(i,k));
Dans les printf, c'est %f qu'il faut mettre. Donc %.2f, etc.
Courage :-)
Cdlt,
Google is your friend