IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Probleme etrange de retour de double


Sujet :

C

  1. #1
    Membre régulier

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 82
    Points
    82
    Billets dans le blog
    1
    Par défaut Probleme etrange de retour de double
    mon main.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int main(int argc, char *argv[])
    {
        long main_tableau[6]=
            {
                2,3,5,5,15,20
            };
        //    long SonTableau[6]={0};
     
        printf("Somme : %ld\n", sommeTableau(main_tableau, 6));
        printf("Moyenne : %lf\n", moyenneTableau(main_tableau, 6));
     
     
        return 0;
    }
    mon tableau.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    long sommeTableau(long tableau[], long tailleTableau);
     
    double moyenneTableau(long tableau[], long tailleTableau);
    mon tableau.c :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    #include "tableaux.h"
    /*
    Exercice 1 : créer une fonction sommeTableau qui renvoie la somme des valeurs
     contenues dans le tableau (utilisez un return pour renvoyer la valeur).
    */
    long sommeTableau(long tableau[], long tailleTableau)
    {
        long i;
        long l_somme = 0;
     
        for (i = 0; i < tailleTableau; i++)
        {
            l_somme+=tableau[i];
        }
     
        return l_somme;
    }
    /*
    Exercice 2 : créer une fonction moyenneTableau  qui calcule et renvoie la
     moyenne des valeurs.
    */
    double moyenneTableau(long tableau[], long tailleTableau)
    {
        long i;
        double d_somme=0.0, d_moyenne;
     
     
        for(i=0 ; i< tailleTableau;i++)
        {
            d_somme += tableau[i];
        }
     
        d_moyenne = d_somme / tailleTableau;
     
        printf("moyenneTableau : %lf\n", d_moyenne);
     
        return d_moyenne;
    }
    A l'execution l'obtiens :

    Somme : 50
    moyenneTableau : 8.333333
    Moyenne : 0.000000

    Press ENTER to continue.
    Pourquoi Moyenne : 0.000000 ???

    Merci à vous !!!

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Katian
    Pourquoi Moyenne : 0.000000 ???
    Ton code parait incomplet (je ne vois pas d'includes).

    Regle ton compilateur :

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    Ensuite, recompile tout (sans exécuter : rebuild all) et poste les message d'erreur...

  3. #3
    Membre régulier

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 82
    Points
    82
    Billets dans le blog
    1
    Par défaut
    En tete de mon main.c j'ai bien :
    #include <stdio.h>
    #include <stdlib.h>
    J'ai ajouté ceci dans CodeBlocks :
    -Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes
    Et le resultat de compile :
    Project : Console application
    Compiler : GNU GCC Compiler (called directly)
    Directory : D:\Travail\c-c++\c\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: tableaux.c
    tableaux.c: In function `moyenneTableau':
    tableaux.c:35: warning: implicit declaration of function `printf'
    Compiling: main.c
    main.c: In function `main':
    main.c:12: warning: implicit declaration of function `sommeTableau'
    main.c:12: warning: long int format, int arg (arg 2)
    main.c:13: warning: implicit declaration of function `moyenneTableau'
    main.c:13: warning: double format, different type arg (arg 2)
    main.c: At top level:
    main.c:4: warning: unused parameter 'argc'
    main.c:4: warning: unused parameter 'argv'
    Linking console executable: D:\Travail\c-c++\c\console.exe
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 7 warnings
    merci !!!

  4. #4
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Il suffit de savoir interpreter les warnings du compilateur.
    Tu vois bien que tu utilises les fonctions sommeTableau() et moyenneTableau() dans la fonction main() alors qu'elles ne sont même pas déclarées.

  5. #5
    Membre régulier

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2003
    Messages : 120
    Points : 82
    Points
    82
    Billets dans le blog
    1
    Par défaut
    Super ca marche, merci !

    J'aurai imaginé que le compilateur genere une erreur sur ce genre de probleme !

    donc comme je doit conserver mon #include "tableaux.h" dans mon tableaux.h (n'est-ce pas ? )

    j'ai ajouté #include "tableaux.h" dans main.c

    J'ai ajouter #ifndef ... etc dans le tableaux.h contre les risques d'inclusions multiples

    youpi !

  6. #6
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par Katian
    Super ca marche, merci !

    J'aurai imaginé que le compilateur genere une erreur sur ce genre de probleme !

    donc comme je doit conserver mon #include "tableaux.h" dans mon tableaux.h (n'est-ce pas ? )

    j'ai ajouté #include "tableaux.h" dans main.c

    J'ai ajouter #ifndef ... etc dans le tableaux.h contre les risques d'inclusions multiples

    youpi !
    J'espère que tu as aussi réglé le warning concernant "printf()" !!!

  7. #7
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par crocodilex
    J'espère que tu as aussi réglé le warning concernant "printf()" !!!
    Il faudrait qu'il inclus stdio.h dans son tableaux.h

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par hegros
    Il faudrait qu'il inclus stdio.h dans son tableaux.h
    Non, dans "tableau.c".
    Citation Envoyé par [url=http://emmanuel-delahaye.developpez.com/codage.htm#organiser_source] Organisation du code source[/url]
    Un fichier d'en-tête ne doit inclure que le strict nécessaire à son autonomie.

  9. #9
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par David.Schris
    Non, dans "tableau.c".

    +1

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par hegros
    Il faudrait qu'il inclus stdio.h dans son tableaux.h
    Pourquoi ? "tableaux.h" ne dépend absolument pas de <stdio.h>.
    Il fait mettre ce qui est est nécessaire, ni plus ni moins. Si dans un protptype, il il y avait un paramètre de type FILE*, OK, mais là, non.

  11. #11
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    oiu dans tableau.c plutot

    merci pour les précisions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme espace et retour a la ligne
    Par eminemanaas1985 dans le forum Word
    Réponses: 1
    Dernier message: 15/09/2008, 14h40
  2. [stream FLV]probleme etrange ..
    Par Fabouney dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2007, 12h16
  3. [TPW] Petit problème pour réaliser un pendule double
    Par lapin59 dans le forum Turbo Pascal
    Réponses: 39
    Dernier message: 02/05/2006, 11h18
  4. Problème ecriture grub.conf pr double boot
    Par peppena dans le forum Administration système
    Réponses: 1
    Dernier message: 02/12/2005, 13h44
  5. [HTML] Probleme valeur de retour checkbox
    Par krony dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 29/11/2005, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo