Tableau en langage C
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Tableau en langage C



  1. #1
    invite1439ebd6

    Tableau en langage C


    ------

    Bonjour à tous,

    Voici mon problème : je fais un tableau à une entrée et je fais une fonction pour faire la somme des chiffres dans ce tableau. Je code sur code::blocks, je n'ai ni erreurs ni warnings lors de la compilation. Le problème c'est que la somme donne 0.0 tout le temps.

    Voici mon code (désolé si la mise en page n'est pas vraiment adaptée à la lecture) :

    Mes prototypes dans un fichier .h :
    double sommeTableau(double tableau[], long taille);

    Ma fonction main dans un fichier .c :
    #include <stdio.h>
    #include <stdlib.h>

    int main (int argc, char * argv[])
    {
    double tableau[4] = {5.4, 0, 2.5, 1};

    afficheTableau(tableau, 4);
    printf("\nLa somme des chiffres du tableau vaut %lf\n", sommeTableau(tableau, 4));
    }

    Ma fonction dans un fichier .c :
    double sommeTableau(double tableau[], long taille)
    {
    double total = 0;
    long i;

    for (i = 0; i < taille; i++)
    {
    total = total + tableau[i];
    }

    return total;
    }

    J'ai cherché une erreur sans succès, j'ai alors décidé de chercher des solutions sur Internet : j'ai trouvé des codes faux corrigés mais je ne vois toujours pas pourquoi le mien ne fonctionne pas.

    Pouvez-vous m'aider s'il vous plait ?

    -----

  2. #2
    erik

    Re : Tableau en langage C

    Salut,

    Curieux, ton code à l'air bien.

    Juste deux truc
    * dans ton main, tu mets bien un #include le fichier qui contient les prototypes de sommeTableau et sommeTableau
    * Comment as tu écris afficheTableau ?

  3. #3
    invite1439ebd6

    Re : Tableau en langage C

    Bonjour et merci :

    Je mets effectivement
    #include "fonctionstableaux.h"
    dans le fichier .c contenant mes fonctions. Faut-il le mettre dans le fichier contenant main ?

    Voici la fonction afficheTableau :
    void afficheTableau(double tableau[], long taille)
    {
    long i;

    for (i = 0; i < taille; i++)
    {
    printf("%lf\n", tableau[i]);
    }
    }

    Son prototype est aussi dans le .h :
    void afficheTableau(double tableau[], long tailleTableau);

    Encore merci pour l'attention que tu portes à ma question.

  4. #4
    erik

    Re : Tableau en langage C

    Tu doit être victime d'une malédiction, ta maison est elle construite sur un ancien cimetierre indien ?

    Ton code fonctionne parfaitement chez moi (sous code::block)

    Encore une question, tes trois fichiers font bien parti du même projet ?

    Un détail en passant il est inutile de nommer les variables passé à une fonction dans le prototype :
    remplace
    Code:
    void afficheTableau(double tableau[], long tailleTableau);
    par
    Code:
    void afficheTableau(double tableau[], long );
    (mais ton erreur ne vient pas de là)


    pour la mise en page clique sur aller en mode avancé, tu disposeras d'un balide code (le #)
    Dernière modification par erik ; 20/08/2007 à 14h46.

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

    Re : Tableau en langage C

    Heu...
    En fait j'ai essayé de mettre le
    #include "fonctionstableaux.h"
    dans le fichier qui contient la fonction main au lien de le laisser dans celui des fonctions et... ça à l'air de marcher !

    Je suis rassuré pour l'histoire du cimetière, on ne sait jamais...

    Existe-t-il une manière d'indiquer que mon problème est résolu et que la discussion est close ?

    Encore merci, bonne journée.

  7. #6
    invite765732342432
    Invité

    Re : Tableau en langage C

    Citation Envoyé par erik Voir le message
    Un détail en passant il est inutile de nommer les variables passé à une fonction dans le prototype :
    remplace
    Code:
    void afficheTableau(double tableau[], long tailleTableau);
    par
    Code:
    void afficheTableau(double tableau[], long );
    (mais ton erreur ne vient pas de là)
    Euh... pas trop d'accord avec ça !
    La première formulation est parfaitement compréhensible juste en voyant le prototype alors que la seconde... on se demande ce que vient faire un "long" en paramètre de cette fonction !

    Pour pouvoir l'utiliser, il faut faire des recherches et la complétion automatique de la plupart des IDE est beaucoup moins explicite.

  8. #7
    erik

    Re : Tableau en langage C

    En fait j'ai essayé de mettre le
    #include "fonctionstableaux.h"
    dans le fichier qui contient la fonction main
    Arrgh, bien sur les prototypes doivent être inclus dans le fichier main.c !!

    Dans ton fichier qui contient les fonctions, le compilateur n'a pas besoin que tu lui indiques quels type de paramètres sont passé au fonctions, puisqu'il a la définition des fonctions dans ce fichier (donc il voit bien ce que tu vas donner à manger à tes fonctions et ce qu'elle vont retourner).
    Par contre dans le fichier main, il ne connait pas les fonctions au moment ou il compile, et là il a besoin de savoir quel est le type des variables et le type retourné par les fonctions que tu utilises (pour vérifier que tu ne fait pas n'importe quoi avec tes fonctions)

  9. #8
    erik

    Re : Tableau en langage C

    Euh... pas trop d'accord avec ça !
    La première formulation est parfaitement compréhensible juste en voyant le prototype alors que la seconde... on se demande ce que vient faire un "long" en paramètre de cette fonction !
    oui en effet

  10. #9
    invite82330d30

    Re : Tableau en langage C

    Un fonction non prototypée, est considérée comme acceptant des int par default partout.

    Afin d'eviter ce malentendu a l'avenir, tu devrait activer l'option Wall de ton compilo. Celle ci va te renvoyer un message du genre implicit declaration.

  11. #10
    invite1439ebd6

    Re : Tableau en langage C

    C'est fait.
    Merci beaucoup.

Discussions similaires

  1. Du langage
    Par invitec15fc0a6 dans le forum Psychologies (archives)
    Réponses: 7
    Dernier message: 18/12/2007, 14h48
  2. Langage C
    Par invite8c0f8078 dans le forum Logiciel - Software - Open Source
    Réponses: 23
    Dernier message: 05/04/2007, 00h57
  3. langage c
    Par invite131aec15 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 31/08/2006, 21h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...