Nombre très petit

foufoudukb Messages postés 4 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 30 août 2009 - 29 août 2009 à 15:00
foufoudukb Messages postés 4 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 30 août 2009 - 30 août 2009 à 00:24
Bonjour à tous!

voilà, je cherche à récupérer des données dans un fichier. En apparence cela fonctionne mais le problème est que le programme me restitue des valeurs nulles.

le fichier:
0 0 5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 -1.4376436966629364e-09 -1.0165676068404582e-09 9.5920309764935507e-08 1.3409310171423860e-08 -9.8103553820712559e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
1 1 5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 -7.1882184833146822e-10 1.0165676068404582e-09 -1.1479772421251265e-07 -4.2957549261064850e-08 -8.1699725998753296e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
2 2 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 -1.0782327724972023e-09 2.0331352136809163e-09 7.1337038353823335e-08 1.1621730590288293e-07 -6.3454363116272094e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
3 3 5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 -6.9764539423897233e-26 -3.8103880608912019e-26 -1.0564174286329797e-07 -1.9969443185454099e-08 -5.1551764268691882e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
4 4 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 3.5941092416573406e-10 1.0165676068404582e-09 -2.4644442897051527e-08 7.1312559274198991e-08 -3.7333375606978057e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
5 5 5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 7.1882184833146801e-10 -1.0165676068404582e-09 2.9143237641006431e-08 7.9770005201165439e-08 8.5922127699931214e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
6 6 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 1.0782327724972023e-09 -3.8103880608912019e-26 8.6467787569492357e-08 -1.1451866836660767e-07 -6.6975190460113780e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
7 7 5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 1.4376436966629364e-09 1.0165676068404582e-09 7.5332666471416223e-08 -6.6398484637040290e-08 -9.5962986901924308e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
8 8 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 1.0782327724972023e-09 2.0331352136809163e-09 8.6748130098379620e-08 5.8946114243673519e-08 1.0044842357823964e-07 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
9 9 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 1.7970546208286704e-09 -1.0165676068404582e-09 -2.8455088597299312e-08 -7.4506352571070326e-08 -4.8333106498504361e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
10 10 5.4677413708901399e-21  6.1629280163583291e-10 -1.7430503480609415e-08 -2.1564655449944045e-09 -3.8103880608912019e-26 -8.4017580355249023e-08 6.5152931231895402e-08 -2.9699979489055341e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
11 11 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 -1.7970546208286704e-09 1.0165676068404582e-09 3.8019181028685855e-08 4.2424208525570272e-09 -3.6649778234832707e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
12 12 5.4677413708901399e-21  6.1629280163583291e-10 -1.8053021462059751e-08 -1.0782327724972023e-09 -2.0331352136809163e-09 -7.5687735578346818e-08 8.8670810431535956e-08 -5.1149870483631126e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 7
13 13 5.4677413708901399e-21  6.1629280163583291e-10 -1.7430503480609415e-08 -1.4376436966629364e-09 -1.0165676068404582e-09 -5.3100107709132043e-08 7.2616851496190110e-08 -9.0955469466501440e-08 1.6700950977027665e-01 2.7545671247358211e-01 2.3631940933620285e-01 1



Résultat du programme:
48 0 0.0000000 0.000000000000 0.00000000000 .... que des 0. 


Ce qui impact sur les calculs! Comment faire? Merci bcp.

FILE *file_stream;
 file_stream = fopen(file,"r");
 if(file_stream == NULL)
 {
printf("Le fichier ne s'est pas ouvert!\n");
 }
 else
 {
printf("Ouverture du fichier reussie!\n");
printf("Lecture du fichier %s\n",file);
        
while(!feof(file_stream))
{
fscanf(file_stream,"%c %c %s %s %s %s %s %s %s %s %s %s %s",
&v.i11[i],&v.i12[i],&v.M1[i],&v.R1[i],&v.x1[i],&v.y1[i],&v.z1[i],&v.vx1[i],
&v.vy1[i],&v.vz1[i],&v.sx1[i],&v.sy1[i],&v.col1[i]) ;
if(i==0)
{
printf("%d %d %.20f %.20f %.20f %.20f %lf %lf %lf %lf %lf\n",v.i11[0],v.i12[0],v.M1[0],v.R1[0],v.x1[0],v.y1[0],v.z1[0],v.vx1[0],v.vy1[0],v.vz1[0],v.sx1[0],v.sy1[0],v.col1[0]);
};
v.comx += v.M1[i]*v.x1[i];
v.comy += v.M1[i]*v.y1[i];
v.comz += v.M1[i]*v.z1[i];
v.tMass += v.M1[i]; 
i++;
}

if(fclose(file_stream))
{puts("Fichier ferme!");};

2 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
29 août 2009 à 23:59
Lors de l'appel fscanf(), tu récupères des chaînes de caractères (%s) et pas des flottants.
0
foufoudukb Messages postés 4 Date d'inscription dimanche 13 mai 2007 Statut Membre Dernière intervention 30 août 2009
30 août 2009 à 00:24
ok merci ça marche mieux mais c'est pas encore ça:
fscanf(file_stream,"%c %c %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
&v.i11[i],&v.i12[i],&v.M1[i],&v.R1[i],&v.x1[i],&v.y1[i],&v.z1[i],&v.vx1[i],
&v.vy1[i],&v.vz1[i],&v.sx1[i],&v.sy1[i],&v.col1[i]) ;


j'obtiens:
48 0 0.0000000000 0.0000000000000000...001 0.0000000000061629 -0.00000000000000000186 -0.00000000 -0.000000000000 ... et des 0


dans le fichier il y a:

0 
0 
5.4677413708901399e-21  6.1629280163583291e-10 -1.8675539443510087e-08 -1.4376436966629364e-09 -1.0165676068404582e-09 9.5920309764935507e-08 
1.3409310171423860e-08 -9.8103553820712559e-08 1.6700950977027665e-01 
2.7545671247358211e-01 
2.3631940933620285e-01 
7


je sais pas pourquoi il y a 48, certaines valeurs obtenues sont bonnes comme la 5e et 6e, mais sinon c'est pas bon. Elles sont nulles!
0
Rejoignez-nous