I need some help !!!

Nono -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
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
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. Nono
     
    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
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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