Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1254 connectés 

  FORUM HardWare.fr
  Programmation
  C

  insérer trois boucles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

insérer trois boucles

n°1740062
jyca
Posté le 02-06-2008 à 10:05:48  profilanswer
 

Bonjour,

 

J'écris un programme qui me permet de calculer une somme à partir de données d'un fichier d'entrée pour différentes valeurs à la fois de eps et de taun. Le problème, c'est que j'ai l'impression que lorsque le programme calcul la valeur de la somme pour la première valeur de eps, i le fait bien, mais lorsqu'il passe à la seconde valeur de eps, il part de la précédente valeur de la somme à la quelle il rajoute la nouvelle. Je ne sais pas si c'est très clair, peut être y-a-t'il un code qui permet de revenir à 0 que je ne connaît pas...

 

Merci d'avance,
Jyca

 

Voici le code de la partie du programme:

Code :
  1. for (taun=880; taun<883; taun+=1) {
  2. for (eps=0.8; eps<1; eps+=0.05) {
  3. for (int i=0; i<500; i++) {
  4. double tempt[500];
  5. double empt[500];
  6. double eempt[500];
  7.   fscanf(fpempt,"%lf %lf %lf\n",&tempt[i],&empt[i],&eempt[i]);
  8.   if(tempt[i]>400 && tempt[i]<501) {
  9.  
  10.   sum1+= empt[i]*exp((tempt[i]-400)/taun);
  11.   sum_1+= empt[i];
  12. esum1 += eempt[i]*eempt[i];
  13. // printf("valeur de sum.3 : %lf \n", );
  14. //printf("valeur de sum2 : %lf \n", sum1);
  15. //printf("valeur de tempt : %lf \n", tempt[i]);
  16.      }
  17. }
  18. //printf("la somme pour exp_empty est %lf et pour empty est: %lf +- %lf\n", sum1, sum_1, esum1);
  19. for(int j=0; j<1800; j++)
  20.    {
  21. double tleak[1800];
  22. double leak[1800];
  23. double eleak[1800];
  24.   fscanf(fpleak,"%lf %lf %lf\n",&tleak[j],&leak[j],&eleak[j]);
  25. if(tleak[j]>400 && tleak[j]<1001) {
  26.  
  27. sum2+= leak[j]*exp((tleak[j]-400)/taun)/eps);
  28. sum_2+=leak[j];
  29. esum2 += eleak[j]*eleak[j];
  30. }
  31. }
  32. //printf("taun: %lf  eps: %lf sum2: %lf\n", taun, eps, sum2);
  33. }
  34. esum1 = sqrt(esum1);
  35. esum2 = sqrt(esum2);
  36. return(0);
  37. }
 

Merci d'avance encore!!!!  ;)


Message édité par Elmoricq le 02-06-2008 à 10:11:47
mood
Publicité
Posté le 02-06-2008 à 10:05:48  profilanswer
 

n°1740066
Elmoricq
Modérateur
Posté le 02-06-2008 à 10:11:19  profilanswer
 

Ce n'est pas du C++, je déplace donc dans "C".


Message édité par Elmoricq le 02-06-2008 à 10:11:30
n°1740074
Taz
bisounours-codeur
Posté le 02-06-2008 à 10:25:42  profilanswer
 

regarde bien la valeur retournée par fscanf. Tes 3 tableaux sont locaux à la boucle la plus intérieure: à chaque itération de cette boucle, ce sont de nouveaux tableau. Si tu veux qu'ils persistent, tu dois les déclarer plus à l'extérieur (à toi de choisir où selon ton besoin).

n°1740076
Taz
bisounours-codeur
Posté le 02-06-2008 à 10:26:51  profilanswer
 

toutes façons, avec ton implémentation actuelle, les tableaux sont inutiles: 3 double ça suffit, vu que tu fscanf immédiatement, la valeur précédente serait de toutes façons écrasée.

n°1740112
jyca
Posté le 02-06-2008 à 11:07:18  profilanswer
 

fscanf me retourne bien les valeurs de mon fichier texte. Le problème persiste, à chaque valeur de eps, le prog m'ajoute la somme aux précédentes. A part ça, le calcul est correct. J'ai peur que cela vienne de mon sum+=... mais du coup je ne vois pas du tout comment faire...

n°1740137
Taz
bisounours-codeur
Posté le 02-06-2008 à 11:26:30  profilanswer
 

bah relis moi, tu m'a pas compris. contrôle le retour de fscanf et déclare/initialise tes variables là où c'est nécessaire.

n°1740166
jyca
Posté le 02-06-2008 à 11:40:28  profilanswer
 

En effet, je ne t'ai pas compris... ça veut dire quoi "contrôle le retour de fscanf"? (on peut dire que je suis débutant en C...)

n°1740173
Elmoricq
Modérateur
Posté le 02-06-2008 à 11:43:42  profilanswer
 

man fscanf

 
Citation :

VALEUR RENVOYÉE
       Ces fonctions renvoient  le  nombre  d'éléments  d'entrées
       correctement assignés.  Ce nombre peut être plus petit que
       le nombre d'élements attendus, et même être nul, s'il y  a
       une  erreur  de  mise  en  correspondance.  La valeur zéro
       indique qu'aucune conversion n'a été faite  bien  que  des
       caractères  étaient  disponibles  en  entrée.  Typiquement
       c'est un caractère d'entrée invalide qui en est la  cause,
       par  exemple un caractère alphabétique dans une conversion
       `%d'.  La valeur EOF est renvoyée si une erreur d'entrée a
       eu  lieu  avant  toute  conversion, par exemple une fin de
       fichier. Si une erreur fin-de-fichier se produit après que
       les  conversions  aient commencé, le nombre de conversions
       réussies sera renvoyé.


Message édité par Elmoricq le 02-06-2008 à 11:44:08
n°1740268
jyca
Posté le 02-06-2008 à 14:37:30  profilanswer
 

La fonction scanf renvoie bien le nombre d'éléments d'entrées correctement assignés...

n°1740274
jyca
Posté le 02-06-2008 à 14:49:51  profilanswer
 

ça n'a rien à voir avec  le fait que j'utilise un "+=" dans la dernière boucle implémentée....?

mood
Publicité
Posté le 02-06-2008 à 14:49:51  profilanswer
 

n°1740358
jyca
Posté le 02-06-2008 à 15:39:08  profilanswer
 

vraiment personne...? pitiééééééé

n°1740398
Taz
bisounours-codeur
Posté le 02-06-2008 à 16:28:26  profilanswer
 

ça a à voir avec où sont déclarées tes variables et tes tableaux inutiles.

n°1740434
jyca
Posté le 02-06-2008 à 17:20:32  profilanswer
 

merci beaucoup, le problème est résolu, et ça m'a bien fait réviser ces histoires de déclaration et d'initialisation! finalement c'est plutot sympatique par ici...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  insérer trois boucles

 

Sujets relatifs
[Fichier TXT] Insérer un élément en début de chaque ligneInsérer un album photo dans une page html
Problème : code html à insérer dans le javascript[BATCH] Comment insérer une tabulation dans un fichier
[XSL] comment inserer un bouton dans une page xslinsérer des lignes dans des fichiers
insérer une ligne dans le fichierInserer une mire sur une video
[Shell] Insérer un caractèreComment insérer un script php ?
Plus de sujets relatifs à : insérer trois boucles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR