petite fonction avec une erreur ;mais laquelle?
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

petite fonction avec une erreur ;mais laquelle?



  1. #1
    dodo71

    petite fonction avec une erreur ;mais laquelle?


    ------

    Bonjour, j'ai voulu faire une petite fonction qui simplement fait la moyenne des notes d'un tableau que l'on donne en "entrée"
    #include<stdio.h>
    float moy(int tab[],int taille)
    {
    int i =0;
    float somme=0;
    float moy=0;

    for(i=0;i<taille;i++)
    {
    somme=somme+tab[i];
    //printf("la valeur de tab[i]est %d\n",tab[i]);//
    //printf("%d\n",somme);//

    }

    moy=somme/taille;
    return moy;
    }

    Ma fonction ne donnant pas le résultat attendu, j'ai fait les test que j'ai mis en commentaire.
    Les valeur de tab[i] sont bien celles attendu, en revanche les valeurs de somme sont toujours les mêmes à chaques itérations et et un chiffre très grand. Je supsonne donc que ça affiche l'adresse de "somme" mais je vois vraiment pas pourquoi.
    Pouvez vous m'aider?

    -----

  2. #2
    danyvio

    Re : petite fonction avec une erreur ;mais laquelle?

    Peut-être en mettant %f au lieu de %d dans le printf ?
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    dodo71

    Re : petite fonction avec une erreur ;mais laquelle?

    ça ne changera au resultat final de la fonction puisque que ce qui est en commentaire, c'est seulement des tests que j'ai fait pour voir pourquoi ça ne me donne pas le bon résultat

    Cordialement

  4. #4
    whoami

    Re : petite fonction avec une erreur ;mais laquelle?

    Bonjour,

    Déjà, quand je vois une variable locale à une fonction avoir le même nom que la fonction, je n'ai pas envie de regarder de plus près.


  5. A voir en vidéo sur Futura
  6. #5
    bzh_nicolas

    Re : petite fonction avec une erreur ;mais laquelle?

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Déjà, quand je vois une variable locale à une fonction avoir le même nom que la fonction, je n'ai pas envie de regarder de plus près.

    Ce n'est pas très académique et ça rend la lecture du code plus difficile, mais ce n'est en aucun cas interdit en C.
    C'est par contre franchement à éviter (voir interdit) avec certains langage.
    Tu as également un mélange de int et de float. Ca ne pose pas de problème dans ce cas, mais ce n'est pas très propre non plus.

    La mauvaise valeur de somme que tu nous signale est due au fait que tu utilises %d au lieu de %f. printf ne parvient pas à interpréter le nombre correctement et t'affiche une valeur erronée.

    Par contre je ne vois pas de problème dans ton code. Il marche même parfaitement chez moi.
    Si tu affiche la valeur retournée par ta fonction (avec %f), la valeur n'est pas la bonne ?
    SI ce n'est pas bon, Le problème viendrait plutôt de la manière dont la fonction est appelée. Ou bien du tableau passé en paramètre.
    Peux-tu nous montrer cette partie du code ?

  7. #6
    polo974

    Re : petite fonction avec une erreur ;mais laquelle?

    Citation Envoyé par whoami Voir le message
    Bonjour,

    Déjà, quand je vois une variable locale à une fonction avoir le même nom que la fonction, je n'ai pas envie de regarder de plus près.

    Citation Envoyé par bzh_nicolas Voir le message
    Ce n'est pas très académique et ça rend la lecture du code plus difficile, mais ce n'est en aucun cas interdit en C.
    C'est par contre franchement à éviter (voir interdit) avec certains langage.
    ...
    Peut-être que le compilo est pourri (ça existe, si, si ...) , on n'en connait rien, car en effet, même si le code est un peu cracra, ça devrait tourner...

    Donc quel compilo?

    (écrire proprement et activer les warning)

    et éviter les float si c'est un "vrai" compilo C, qui de toute façon devrait bosser en double (j'ai eu un cas où le passage de float en double m'a fait gagner 30% de temps de calcul).
    Jusqu'ici tout va bien...

  8. #7
    bzh_nicolas

    Re : petite fonction avec une erreur ;mais laquelle?

    Citation Envoyé par polo974 Voir le message
    et éviter les float si c'est un "vrai" compilo C, qui de toute façon devrait bosser en double (j'ai eu un cas où le passage de float en double m'a fait gagner 30% de temps de calcul).
    C'est un peu plus compliqué que ça : voir ici.

    Ca va dépendre :
    - du processeur cible : si ton processeur ne supporte pas le double de manière native les float seront forcément plus rapides.
    - des accélérations activés (et disponibles) ou pas sur le processeur : SSE, SSE2, etc...
    - des optimisations et des options de compilation utilisées.
    - de l'endroit d'où viennent tes données : cache L1, L2, ram, etc... mais là tu n'as pas vraiment la main sur cet aspect tu es bien obligé d'avoir confiance dans ton compilateur (et dans les options que tu lui passes pour qu'il fasse son boulot correctement).

  9. #8
    whoami

    Re : petite fonction avec une erreur ;mais laquelle?

    Bonjour,
    Citation Envoyé par bzh_nicolas Voir le message
    Ce n'est pas très académique et ça rend la lecture du code plus difficile, mais ce n'est en aucun cas interdit en C.
    Je n'ai pas dit que le langage l'interdisait.

    Mais il se trouve qu'un humain n'est pas un compilateur, et a donc beaucoup plus de difficultés pour lire ce genre de code (et encore, dans le cas présent, c'est vite fait, avec seulement quelques lignes).

    Mais saperlipopette, quand je vois ce genre de truc, je me demande toujours :

    Est-il si difficile d'utiliser des noms différents ?

Discussions similaires

  1. Une fleur, mais laquelle?
    Par Dixmanches dans le forum Identification des espèces animales ou végétales
    Réponses: 1
    Dernier message: 16/10/2012, 18h41
  2. Une petite constellation ? mais laquelle ?
    Par Barranco dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 6
    Dernier message: 20/11/2010, 14h27
  3. Erreur de conception mais laquelle? CD4541
    Par invite2c55735f dans le forum Électronique
    Réponses: 20
    Dernier message: 23/06/2009, 11h37
  4. Fonction mahématique mais laquelle...
    Par reglis06 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 14/10/2008, 17h24
  5. un exo niveau DUT mais avec une erreur je pense...
    Par invitef5d25cf9 dans le forum Chimie
    Réponses: 4
    Dernier message: 05/10/2008, 13h34