Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exo 1 Tableau C

Ma fonction affiche des valeurs que je n'ai détaillé

Sujet résolu
    23 juin 2020 à 12:27:21

    Bonjour,

    J'ai des problèmes avec cet exercice car mon code étant celui-ci :

    #include <stdio.h>
    #include <stdlib.h>
    
    int sommeTableau(int tableau[], int tailleTableau);
    
    int main()
    {
        int Lp[5] = {2,3,4,5,6};
        int tt = 5;
    
        printf("%d", sommeTableau(Lp[tt], tt));
        return 0;
    }
    
    int sommeTableau(int tableau[], int tailleTableau)
    {
        int somme = 0;
        int i = 0;
        int inc = 0;
    
        for (i = 0; i < tailleTableau; i++)
        {
            inc = &tableau[i];
            printf("%d\n", inc);
    
            somme += inc;
        }
        return somme;
    }




    Le printf c'est pour vérifier les valeurs que le tableau renvoie dans cette fonction afin de savoir ce que renvoie les différents pointeurs.

    Voici le résultat :

    0

    4

    8

    12

    16

    40

    Je ne comprends absolument pas comment la table des 4 arrive dans mon programme.

    Et pour l'esperluette dans inc = &tableau[i]; mon programme ne marche pas sans cette esperluette.

    Merci beaucoup d'avoir lu j'espère que vous avez la solution ;)

    -
    Edité par Robinettesperluette 23 juin 2020 à 13:00:01

    • Partager sur Facebook
    • Partager sur Twitter
      23 juin 2020 à 12:38:47

      Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).
      • Partager sur Facebook
      • Partager sur Twitter
        23 juin 2020 à 12:42:06

        Salut,

        Comme dis précédemment : utilises le bouton code pour poster du code.
        Concernant ton code il y a 2 erreurs importantes :

        inc = &tableau[i];

        Pas besoin du & ici. Tu veux ajouter la valeur de ton tableau et non son adresse.

        printf("%d", sommeTableau(Lp[tt], tt));

        Ici, quand tu appelles sommeTableau, tu dois lui envoyer le tableau et non une seule case.
        En clair, le 1er parametre est Lp et non Lp[tt].

        Si tu as bien configuré ton IDE/Compilateur tu devrais avoir un joli warning qui t'informes de cette erreur.

        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2020 à 12:42:57

          L'esperluette, il ne la faut pas !

          Ce n'est pas la que ce trouve ton erreur, mais dans la fonction main lors de l'appel de la fonction :

          Pour passer un tableau a une fonction on écrit juste son nom :

              printf("%d", sommeTableau(Lp, tt));



          • Partager sur Facebook
          • Partager sur Twitter
            23 juin 2020 à 12:44:42

            Bonjour,

            Pourquoi ne tiens-tu pas compte des warnings que ton compilateur doit certainement te signaler ?

            ___

            Tu n'as pas suivi les règles de ce forum pour poster ton code correctement.

            ___

            Oops. Grilled !

            -
            Edité par magma 23 juin 2020 à 12:47:28

            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2020 à 12:58:43

              Robinettesperluette a écrit:

              Et pour l'esperluette dans inc = &tableau[i]; mon programme ne marche pas sans cette esperluette.

              Oui mais ça ne marche pas non plus avec !

              Sinon, avec cette logique, tu peux aussi bien mettre un # ou un £ devant, au motif que sans le # ou le £ ça ne marche pas.

              • Partager sur Facebook
              • Partager sur Twitter
                23 juin 2020 à 13:02:54

                ironwolf151 a écrit:

                Salut,

                Comme dis précédemment : utilises le bouton code pour poster du code.
                Concernant ton code il y a 2 erreurs importantes :

                inc = &tableau[i];

                Pas besoin du & ici. Tu veux ajouter la valeur de ton tableau et non son adresse.

                printf("%d", sommeTableau(Lp[tt], tt));

                Ici, quand tu appelles sommeTableau, tu dois lui envoyer le tableau et non une seule case.
                En clair, le 1er parametre est Lp et non Lp[tt].

                Si tu as bien configuré ton IDE/Compilateur tu devrais avoir un joli warning qui t'informes de cette erreur.

                Merci, c'est résolu

                magma a écrit:

                Bonjour,

                Pourquoi ne tiens-tu pas compte des warnings que ton compilateur doit certainement te signaler ?

                ___

                Tu n'as pas suivi les règles de ce forum pour poster ton code correctement.

                ___

                Oops. Grilled !

                -
                Edité par magma il y a 12 minutes


                si mais les warnings ya pas toutes les infos dessus et pourquoi ne tiens-tu pas compte de la question plutôt ?



                • Partager sur Facebook
                • Partager sur Twitter
                  23 juin 2020 à 16:30:04

                  Robinettesperluette a écrit:

                  si mais les warnings ya pas toutes les infos dessus et pourquoi ne tiens-tu pas compte de la question plutôt ?

                  Il va bien falloir t'y mettre un jour ou un autre. Si a chaque fois que tu as un warning tu viens poser la question sur le forum, tu ne va pas avancer bien vite. Le warning, c'est instantané, la question il faut attendre la réponse, qui peut-être plus ou moins longue à venir selon la dispo et humeur de ceux qui ont les réponses.

                  En principe on les prend dans l'ordre, souvent le premier élimine les autres.

                  Dans le cas de ton code, sans l'esperluette que tu as ajouté, il y en avait qu'un seul warning et sur la bonne ligne et toi tu as modifié le programme sur une autre ligne.


                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2020 à 17:22:30

                    rouloude a écrit:

                     la question il faut attendre la réponse, qui peut-être plus ou moins longue à venir selon la dispo et humeur de ceux qui ont les réponses.

                    En plus, y en a la moitié qui répondent des conneries. Va savoir lesquels.



                    -
                    Edité par michelbillaud 23 juin 2020 à 17:22:43

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Exo 1 Tableau C

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown