Partage
  • Partager sur Facebook
  • Partager sur Twitter

Afficher un tableau

    10 avril 2021 à 7:12:26

    Bonjour je suis entrain de faire un exercice mais j'ai un petit problème, je n'arrive pas à afficher mon tableau, pourtant j'ai déjà fait bien plus compliqué mais je ne trouve pas la solution pour continuer mon exercice.

    #include <stdio.h>
    #include <stdlib.h>
    
    void affiche(int tableau[], int tailleTableau);
    void maximumTableau(int tableau[], int tailleTableau, int valeurMax);
    
    
    int main()
    {
        int tableau[4] = {8, 9, 11, 15};
        int valeurMax;
        maximumTableau(tableau, 4, valeurMax);
        printf("Reinitialiser a partir : ");
        scanf("%d", valeurMax);
        affiche(tableau, 4);
        return 0;
    }
    
    void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
    {
        int i = 0;
    
        for(i = 0 ; i < tailleTableau ; i++)
        {
           if(tableau[i] > valeurMax)
           {
               tableau[i] = 0;
           }
           else
           {
    
           }
        }
    
    void affiche(int tableau[], int tailleTableau)
    {
        int i;
    
        for (i = 0 ; i < tailleTableau ; i++)
        {
            printf("%d\n", tableau[i]);
        }
    }
    
    }

    le message d'erreur est undefined reference to 'affiche'

    Merci à vous.

    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2021 à 7:21:30

      Bonjour,

      regarde ton indentation

      • Partager sur Facebook
      • Partager sur Twitter
        10 avril 2021 à 8:20:32

        Tu ne fais pas les choses dans le bon ordre, il me semble ...
        Pourquoi un else ici? Avec rien dedans en plus.
        Indentation? Plutôt jumelage des accolades.
        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

          10 avril 2021 à 8:26:47

          PierrotLeFou a écrit:

          Plutôt jumelage des accolades.

          qui est révélé par l'indentation … immédiatement visible à la fin.

          • Partager sur Facebook
          • Partager sur Twitter
            10 avril 2021 à 11:28:29

            Le compilateur ne signale-t-il pas qu'il y a une fonction imbriquée ? C'est une autre façon de découvrir le pot aux roses. Ou alors c'est juste un warning ? Conseil : faire afficher le maximum de warnings (je ne sais pas comment on fait avec un IDE si tu en utilises un, en ligne de commande j'utilise les options -Wall -Wextra -pedantic ).
            • Partager sur Facebook
            • Partager sur Twitter
              10 avril 2021 à 11:52:28

              Et aussi -std=c11  (ou autre) pour rester dans du C standard, et ne pas déborder sur les gnuseries (extensions du langage spécifiques au compilateur gcc). Les fonctions imbriquées en font partie, me semble-t-il.

              Ce n'est pas le problème pour le débutant que ça ne soit pas standard. Le souci, c'est que si elles ont leur intérêt, les gnuseries en question ont aussi l'inconvénient de ne pas être évoquées dans les tutoriels (qui ont autre chose à s'occuper que de rentrer dans ces détails), donc de ne pas faire entrer en résonance le neurone qui se pose des questions poukoikiveutpas avec celui qui se souvient de ce qu'il a lu quelque part.

              On ne soulignera jamais assez l'intérêt pédagogique d'y ajouter  -Werror pour s'obliger à régler les problèmes soulevés, au lieu de faire semblant de ne pas les voir :-)

              -
              Edité par michelbillaud 10 avril 2021 à 12:01:14

              • Partager sur Facebook
              • Partager sur Twitter
                10 avril 2021 à 12:59:42

                Ah oui, les fonction imbriquées sont peut-être indiquées par -std=c11 en effet (que j'utilise aussi − pas étonnant, c'est en venant sur le forum que j'ai appris l'intérêt de ces options). En tout cas ça m'est déjà arrivé de trouver une erreur d'accolades grâce à ce warning.

                -
                Edité par robun 10 avril 2021 à 13:00:13

                • Partager sur Facebook
                • Partager sur Twitter
                  10 avril 2021 à 14:26:55

                  En fait pour avoir une conformance stricte à la norme ISO (que l'on précisera) l'option à utiliser est -pedantic. essayer de transformer un warning qui n'existe pas en erreur n'y changera rien … l'erreur n'existera pas non plus …

                  En revanche si on veut une stricte adhérence à la norme alors un -pedantic-errors est recommandable, en effet → https://gcc.gnu.org/onlinedocs/gcc-10.3.0/gcc/Warning-Options.html#index-pedantic-1 

                  Avec de grandes options veinnent de grandes responsabilités …

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Afficher un tableau

                  × 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