I need some help !!!

Fermé
Nono - 7 mai 2007 à 14:18
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 7 mai 2007 à 16:01
Bonjour,
je voudrais faire une fonction moyenne sur un tableaux.En fait, je veux la moyenne de i elt du tablo /voila le code en C
Si kk'un peux m'expliquer pkoi ca ne marche pas, merci

float moyenne (float Z[NBTIR],int n_tir)
{
int j;
float moy,somme;
for(j=0;j<n_tir;j++) //pour tout les tirs -k§§
{
if(n_tir==0)
{
somme=Z[j];
}
else
somme=somme+Z[j];
}
moy=somme/float(*n_tir+1);
printf("%d %f %f %f \n",j,Z[j],somme,moy);
return(moy);
}
// ds le main, j'appelle cette fn

for(j=0;j<nbtirok;j++)
{
num[j]=moyenne(&ZH[j],j);
fprintf(fa,"%d %f %f \n",j,ZH[j],num[j]);
} //nbtirok
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2007 à 14:36
Salut
Alors déjà, tu n'as pas initialisé somme dans le cas ou n_tir différent de 0
Ensuite tu as écrit moy=somme/float(*n_tir+1), c'est
moy=somme/(float)(n_tir+1)
Et pour finir, je te donne un code plus clair :

float moyenne float Z[NBTIR], int n_tir){
float somme=0.0f;
int j;

if(n_tir==0) return 0;
for(j=0;j<n_tir;j++)
somme+=Z[j];

return somme/(float)n_tir;
}

N'oublie pas d'indenter le code, cela facilite l'écriture.
Le cas n_tir=0, tu le prends en compte au début. Si on veut les 0 premier élément alors on ne prends pas d'éléments dans le tableau, donc tu renvoies ce que tu veux.
J'espère répondre à tes questions.
0
Salut
merci d'avoir repondu .
Tout d'abord, c'est 1 erreur de ma part d'avoir ecrit (*n_tir+1) (j'ai fais du copier /coller de mauvaise qualite :-0).
de plus quand n_tir=0, je veux 1 moyenne.
num[j] (du pge principale) est le resultat de la moyenne pour le j eme elt (ainsi num[0] existe et vaut la valeur de Z[0]) et pas 0).
D'autre part , est ce k'il ne faut pas passer les arguments de la fn par adresse et non par valeur (comme je l'ai fait));
merci
nono
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mai 2007 à 16:01
En effet vaut mieux passer en pointeur.

float moyenne (float *Z, int n_tir) {

float somme=0.0f;
int j;

if(n_tir==0) return Z[0];

for(j=0;j<n_tir;j++)
somme+=Z[i];

return somme/(n_tir); /* ou n_tir + 1 */ j'ai pas bien compris ton histoire de moyenne mais ça tu peux gérer lol */

}
0