Partage
  • Partager sur Facebook
  • Partager sur Twitter

Valeur max "TP"

Sujet résolu
    6 avril 2021 à 14:58:18

    Bonjour;

    Débutant et envie de comprendre ce qu'est la programmation, je me suis lancé un défi d'apprendre le langage "C"

    Aujourd'hui je suis arrivé au stade des TP au court des tableaux.

    Je pêche et ne comprends pas pourquoi le maximum tableau ne s'affiche pas!!!

    J'ai lu et relu pointeur et tableau plusieurs fois et le résultat est toujours le même.

    Si quelqu'un peut m'expliquer mon erreur, je suis preneur.

    Grand merci d'avance.

    #include <stdio.h>
    #include <stdlib.h>
    
    // Prototype
    void maximumTableau(int tableau[], int tailleTableau, int valeurMax);
    
    
    int main(int argc, char *argv[])
    {
        int valeurMax = 0;
        int tableau[6] = {79, 15, 3, 70, 10, 53}, i = 0;
        int tailleTableau = {6};
    
        // Affichage de des valeurs du tableau pour vérifier
        for (i = 0 ; i < 6; i++)
        {
            printf("%d\n", tableau[i]);
        }
        printf("L adresse de la valeur max est : %p\n",&maximumTableau); // Affichage de l'adresse Max
        printf("Le max du tableau est : %d\n", maximumTableau);          // Affichage de la valeur Max
    
        return 0;
    }
    
    
    void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
    {
       valeurMax = 0;
       tableau = 0;
       int i;
    
       for (i = 0 ; i < tailleTableau; i++)
       {
           if(tableau[i]>valeurMax)valeurMax = tableau[i];
       }
    }

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2021 à 16:39:08

      Bonjour ! Quelques remarques :

      1)

      moipanpan a écrit:

      Débutant et envie de comprendre ce qu'est la programmation, je me suis lancé un défi d'apprendre le langage "C"

      Je te propose de changer le moyen d'atteindre cet objectif : le langage Python. Apprendre la programmation en C, c'est comme apprendre la conduite avec une formule 1 : tu dois aussi régler le moteur (connaître des trucs de bas niveau comme les pointeurs) et tu auras plein d'accidents (erreurs de segmentation)...

      2)

      moipanpan a écrit:

      Si quelqu'un peut m'expliquer mon erreur, je suis preneur.

      Tu penses qu'il n'y a qu'une erreur ? ;)

      3)

          printf("L adresse de la valeur max est : %p\n",&maximumTableau);

      Ici, ce que tu affiches est l'adresse de 'maximumTableau'. Or c'est quoi, 'maximumTableau' ? C'est ça :

      void maximumTableau(int tableau[], int tailleTableau, int valeurMax);

      Ce truc, c'est une fonction. Donc tu affiches l'adresse d'une fonction. Quelque chose me dit que ce n'est pas le but...

      4)

          printf("Le max du tableau est : %d\n", maximumTableau);

      Et là, tu affiches carrément la fonction ! (Je me demande si ça ne sera pas converti en adresse de la fonction, d'ailleurs).

      En fait il faut faire :

          printf("Le max du tableau est : %d\n", maximumTableau(tableau, 6, 0));

      (J'ai remplacé les deux derniers paramètres par leurs valeur par flemme d'écrire le nom des variables. Le but est que tu voies qu'il ne faut pas oublier de mettre les paramètres lorsqu'on appelle une fonction !)

      5) En fait, il ne faut pas mettre la valeurMax en paramètre, car la fonction se contente de recopier les paramètres. Il s'agit du résultat de la fonction, ce qu'elle calcule, donc il faut le retourner. À la fin de la fonction :

          return valeurMax;

      Et pour l'appeler :

          valeurMax = maximumTableau(tableau, 6)
          printf("Le max du tableau est : %d\n", valeurMax);

      (on peut se passer de 'valeurMax' et mettre directement l'appel de la fonction dans le 'printf').

      -
      Edité par robun 6 avril 2021 à 16:41:20

      • Partager sur Facebook
      • Partager sur Twitter
        6 avril 2021 à 16:44:52

        Hello,

        Et en complément à ce qu'a écrit robun, ta fonction doit être de type int, pas de type void, ces fonction ne renvoyant rien.

        -
        Edité par edgarjacobs 6 avril 2021 à 16:48:47

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          6 avril 2021 à 17:03:14

          Merci pour ton aide, mais ça bloque, je ne pige pas.

          Tu penses que je devrais commencer par du phyton? Se sera plus facile que le C?

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2021 à 17:37:48

            Je dirais :

            • Plus facile : pour débuter, le C fait probablement des langages les plus difficiles (mais je veux bien croire qu'il y en a d'autres). Quand j'ai appris le C, ce n'était pas mon premier langage, pourtant j'ai galéré (et longtemps je l'ai détesté). J'étais le roi de l'erreur de segmentation, et encore aujourd'hui j'ai peur des pointeurs. De plus le Python a une syntaxe qui facilite l'apprentissage, je pense notamment à l'indentation.
            • Plus rapide : en C il faut tout refaire à partir de 0 car c'est un langage de bas niveau, et on passe du temps sur des détails. Le Python est un langage de haut niveau avec, en plus, une syntaxe qui facilite les choses (exemple : pour lire les lignes d'un fichier on écrit « for ligne in fichier » ; quand on vient du C c'est comme une délivrance [j'ai aimé le Python le jour où j'ai appris ça]).
            • Plus amusant : l'interface graphique Tkinter est abordable assez vite. Je ne connais pas d'interface graphique en C aussi facile (ou alors "ncurses" ?)
            • Plus pédagogique : le Python permet d'apprendre des tas de concepts de programmation que ne permet pas le C, trop « rudimentaire ».

            -
            Edité par robun 6 avril 2021 à 17:39:10

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2021 à 17:48:06

              moipanpan a écrit:

              Merci pour ton aide, mais ça bloque, je ne pige pas.

              Tu penses que je devrais commencer par du phyton? Se sera plus facile que le C?

              "Ça bloque", c'est quoi qui bloque? Tu peux poster ce que tu as fait.

              Je comparerais apprendre le C, à prendre les commandes d'un vieux coucou. Avant de s'envoler on va devoir comprendre un certain nombre de choses. Ensuite il n'y a pas beaucoup de commandes mais elles ont toutes un effet direct sur comportement de l'avion. Si on touche sans savoir, les conséquences sont immédiates et terribles.

              Apprendre Python, c'est se mettre sur un simulateur d'Airbus. Il y a pleins de boutons, essayons de mettre les gaz et de tirer sur le manche. Magique ça décolle. Ensuite on peut essayer de voir à quoi servent tous ces boutons, et comme il y a un ordinateur de bord et que c'est un simulateur on aura des avertissements et des aides. La tentation d'essayer les boutons oranges?

              Donc le C t'oblige a un peu plus comprendre avant de pouvoir avancer. Mais attention quel que soit ce que tu choisis, il te faut un minimum de base. Ici tu mélanges les variables, les fonctions et les résultats de fonction. Quel que soit le langage, ces concepts minimum sont à comprendre pour avancer.

              • Partager sur Facebook
              • Partager sur Twitter

              En recherche d'emploi.

                6 avril 2021 à 17:55:15

                Dalfab a écrit:

                [...]
                Mais attention quel que soit ce que tu choisis, il te faut un minimum de base. Ici tu mélanges les variables, les fonctions et les résultats de fonction. Quel que soit le langage, ces concepts minimum sont à comprendre pour avancer.

                👍

                Le gros gros avantage de python (par exemple) est d'avoir un repl (read/eval/print/loop) = la console dans laquelle tu peux taper des commandes et voir immédiatement le résultat ; ou un notebook jupyter … mais bon …

                Tu as aussi beaucoup plus de types dispo (list, dict, tuple, …), un package manger …

                Bref, pour apprendre, Python serait sans doute plus approprié surtout si tu ne comprends pas grand chose aux notions de bases (variable, fonction, …).

                J'exagère, évidemment, mais à peine ; je pense que tu te sentiras surtout moins frustré.

                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2021 à 18:14:42

                  Snif snif ... et moi qui ai commencé en Fortran et passé par l'assembleur avant de tomber sur C et finalement en Python.
                  Je pense que j'ai fait les choses à l'envers ...
                  Ça te prendra parfois 50 lignes de code en C pour faire l'équivalent d'une fonction lambda en Python qui ne fait qu'une ligne ...
                  • Partager sur Facebook
                  • Partager sur Twitter

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

                    6 avril 2021 à 18:40:46

                    Super merci à vous tous!!!

                    Alors je vais me tourner vers Phyton, et reviendrai vers vous pour de nouveaux TP et questions.

                    MERCI encore à vous tous...

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Valeur max "TP"

                    × 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