cyber81 a écrit :
j'ai controlé l'evolution de la somme et de la valeur de fscanf mais ca reste bloqué a 0, ou ca met n'importe quoi...
|
fscanf te renvoie le nombre de valeurs qu'il a stockées. Si ça te donne "0" alors que manifestement tu veux stocker une valeur, il y a un problème...
cyber81 a écrit :
Si j'ai bien compris strtod () transforme un nombre en chaine de caracteres?
|
Ben non. "strtod" se lit "str(ing) to d(ouble)" donc chaîne vers nombre donc ça transforme une chaîne en nombre !!!
cyber81 a écrit :
Dans un fichier j'ai memorisé une liste de "nb_valeurs" nombre du style :
0.1234
0.5687
0.3214
0.0256
Je voudrais les réutiliser et en calculer la moyenne. J'ai donc fait :
Code :
- float calcul_moyenne (int nb_valeurs)
- {
- FILE* monfichier;
- monfichier= fopen ("poisson.doc","r" );
- int i;
- int nombre[5];
- float somme=0;
- for (i=0;i<nb_valeurs; i++)
- {
- somme= somme + fscanf(monfichier, "%.4f",&nombre); // jpense que je peux pas vraiment
- // ecrire ca comme ca, si ?
- }
- return (somme/(nb_valeurs));
- fclose(monfichier);
- }
|
|
Il n'y a aucune cohérence dans ce que t'écris
1) pourquoi tu prépares un tableau de 5 nombres alors que, manifestement, tu n'en utilises qu'un seul dans ta boucle ???
2) un tableau de 5 "int" pour stocker des nombres à virgule flottante ???
3) "&nombre" dans ton fscanf montre que vraiment tu ne sais pas que "nombre" est un tableau. C'est pourtant écrit 3 lignes au dessus !!!
4) somme=somme+fscanf(...) => finallement, on se demande de plus en plus à quoi sert la variable (ou le tableau) "nombre" que tu n'utilises en fait jamais
cyber81 a écrit :
J'ai lu aussi que je pouvais utiliser quelque chose comme fgets mais ici j'ai des nombres et pas une chaine de caracteres...
|
Ton fichier contient les éléments suivants
'0' '.' '1' '2' '3' '4' '\n' '0' '.' '5' '6' '8' '7' '\n' '0' '.' '3' '2' '1' '4' '\n' '0' '.' '0' '2' '5' '6' '\n'
Tels que je te les affiche, c'est bien une suite de caractères non ??? Que la commande "cat" (Unix/Linux) ou "type" (Windows) te les affiche bien proprement ligne par ligne (chaque ligne calée sur le '\n') n'est qu'un effet d'affichage. Et que ces suites de caractères représentent des nombres dans ta tête n'est qu'une adaptation que fait ton cerveau de ce qu'il voit => Pour l'ordinateur, ce ne sont que des caractères !!!
Oui. Commence par bien comprendre ce que contient ton fichier... et comment fonctionnent les fonctions que t'invoques (le C n'est pas de la sorcellerie). Un petit peu de jugeotte algorithmique par dessus (inutile de déclarer un tableau si on n'utilise qu'un nombre à la fois) et tout ira beaucoup mieux...
Message édité par Sve@r le 28-04-2007 à 19:26:09
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.