Modification à faire

Fermé
alffouss Messages postés 121 Date d'inscription mercredi 15 octobre 2008 Statut Membre Dernière intervention 20 octobre 2021 - 22 nov. 2010 à 12:33
 alffouss - 22 nov. 2010 à 19:39
Bonjour,
J'ai effectué un programme en C qui me permet de calculer un cosinus.

Le probléme c'est que mon programme ne me permet pas de calculé le cosinus des valeurs élevé.

Voici mon code C et merci pour me donné une astuce qui me permet de calculé le cosinus des nombres élevé.

Le CODE:

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


float puissance(float x, int n)
{
float p=1;
int i=1;
if (n==0)
return 1;
for (i=1; i<=n; i++)
{
p=p*x;
}
return p;
}
int factorielle(int n)
{
int i=n-1, resultat=n;
if(n==0)
return 1;
while(i>1)
{
resultat=resultat*i;
i=i-1;
}
return resultat;
}
double sinus( double x)
{
double precision=0.00001;
int cste=1;
int n=0;
double sin=0;
while(((puissance(x, n+1))/(factorielle(n+1)))>=precision)
{
sin=sin+(cste*puissance(x, n+1))/(factorielle(n+1));
cste=-1*cste;
n=n+2;
}
return sin;
}
double cosinus(double x)
{
double precision=0.00001;
int cste=1;
int n=0;
double cos=0;
while(((puissance(x, n))/(factorielle(n)))>=precision)
{
cos=cos+(cste*puissance(x, n))/(factorielle(n));
cste=-1*cste;
n=n+2;
}
return cos;
}

main()
{
//double x=3;
double b;
double Pi=3.14159;
double x=2*Pi;
b=cosinus(x);
printf(" b = %lf \n", b);

}

3 réponses

en remplaçant les int par des long, et les float par des doubles ? en les mettant en unsigned si tu ne compte pas faire avec des nombres négatifs. sinon les OS fournissent généralement des types permettant des valeurs plus grosses, style int64 ou autre
0
Merci pour ta reponse mais en effet sur les doubles je ne peut pas mettre de unsigned et sur les int j'ai mis unsigned lon mais j'ai tjrs rien.

Vous pouvez envoyé la bonne réponse avec le code SLP

merci
0
en fait dans le programme, je suis sensé faire le calcul à différentes frequentes donc des multiples de 2 pi et en calculant bah le code me sort des valeurs absurde genre cos (10) il me donne 4912150 alors que je devrai avoir -0.839......

je pense que c'est juste la partie cosinus qui ne marche pas!!!

alors si qlq'un a une idée! aidez moii svp
0