cs_darkwhite
Messages postés133Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention29 avril 2008
-
18 avril 2008 à 21:06
cs_darkwhite
Messages postés133Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention29 avril 2008
-
18 avril 2008 à 23:42
Salut a tous,
j'ai un probleme bizarre. J'ai fait un programme avec des fonctions et des variables float. Tout marche impecable. Cependant j'ai voulu passer à des variables double et j'ai donc changé tout les float par double. Et bien sur sa ne marche pas (le prog se compile mais les resultat sont mauvais).
Quel difference y a t-il donc entre le float et le double??. Pour printf et scanf le %f est bien commun au float et au double ?
Voila le code (en float) qui marche, il est regroupé dans plusieurs fichier (mais ça c'est pas vraimment important). Il s'agit d'un programme de calcul d'integrale par la methode de simpson.
Dans ce fichier on a la fonctions de resolution et celle qui renvoie la valeur de f(x) la fonction calculée :
//algorithme de calcul de simson
float simpson (float a, float b,int N)
{
float h=(b-a)/N;
float sigma1=0,sigma2=0,I=0;
int j=0;
for(j=1;j<=(N/2)-1;j++)
{
sigma1=sigma1+f(a+2*h*j);
}
// printf("sigma1=%f\n",sigma1);getchar;
for(j=1;j<=(N/2);j++)
{
sigma2=sigma2 +f(a+h*((2*j)-1));
}
// printf("sigma2=%f\n",sigma2);getchar;
I= (h/3)*(f(a)+2*sigma1+4*sigma2+f(b));
return I;
}
//renvoie l'image par la fonction f
float f(float x)
{
float y;
y=1/(sqrt(1-(sin(3.14/6)*sin(3.14/6))*(sin(x)*sin(x))));
return y;
}
Et dans un autre on a un main qui communique avec ça pour obtenir les resultats.
Voila j'esperere que vous pourrez m'aider. En fait j'ai juste un probleme avec float et double, l'algorithme est juste, mais je prefere vous presenter trop que pas asser
cs_darkwhite
Messages postés133Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention29 avril 2008 18 avril 2008 à 23:05
gcc -o simpson test-simpson.c simpson.c -lm
Mais moi aussi j'ai fait un petit code de merde avec un appel avec scanf("%lf",&x) et sa marche
Donc je ne sais plus quoi modifier ...
Je sent que je vais devoir creer un nouveau fichier
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 18 avril 2008 à 23:17
bof y a pas de raisons...
si tu fais:
double a,b;
scanf("%lf%lf",&a,&b);
printf("%lf\n%lf\n",a,b);
obtiens-tu les bonnes valeurs de a et b?
d'autre part, as-tu testé avec des valeurs directement dans le code, par exemple simpson(1.0,3.0,100)? Si cela fonctionne ou pas permettra de cerner le problème : soit la fonction soit la saisie de variables.
cs_darkwhite
Messages postés133Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention29 avril 2008 18 avril 2008 à 23:42
je pense qu'il s'agit de la saisie car j'ai mis un printf("a=%lf\nb=%lf\n");getchar(); au debut de la fonction simpson qui m'affiche a=0.000 et b=0.000 (j'ai dejà vu ce probleme mais la j'ai bien mis scanf("%lf)) et j'ai aussi essayer de mettre ce meme printf("a=%lf\nb=%lf\n");getchar(); juste apres la saisie des variables mais il n'apparait pas dans le programme, il ne s'affiche pas.