Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculateur de moyenne debutant

    10 avril 2019 à 21:02:13

    Bonjour , je suis débutant et je suis le cours de code C de openclassroom , j'ai donc décider de pratiquer un maximum pour apprendre le mieux et plus simplement possible , je me suis donc lancer dans un mini "projet " c'est un calculateur de moyenne , son but est de donner la moyenne général pour 6 matières.

    Bien evidamment je vais l'ameliorer au fur et a mesure que j'avance sur mon cours cependant , j'ai commencer cela mais lorsque je compile le code ci dessous il me marque

    :lvalue required as left operand of assignment

    voici mon code :

    #include <stdio.h>
    #include <stdlib.h>
    
    double histoire = 0;            // initialisation de toutes les matieres 
    double maths = 0;
    double physique = 0;
    double anglais = 0;
    double espagnol = 0;
    double francais = 0;
    
    double moyenne(int total);      // prototype de ma fonction moyenne avec comme parametre total
    
     int main(int argc, char const *argv[])
    {
    
    
    printf("Mettez votre moyenne de maths\n");        // demande des matieres 
    scanf("%f",&maths);
    printf("Mettez votre moyenne de physique\n");
    scanf("%f",&physique);
    
    printf("Mettez votre moyenne de francais\n");
    scanf("%f",&francais);
    
    printf("Mettez votre moyenne d'anglais\n");
    scanf("%f",&anglais);
    
    printf("Mettez votre moyenne d'espagnol\n");
    scanf("%f",&espagnol);
    
    printf("Mettez votre moyenne d'histoire\n");
    scanf("%f",&histoire);
    
    
    	return 0;
    }
    
    double moyenne(int total)                         // fonction moyenne avec parametre total 
    
    {
    
    
      total = (histoire+maths+physique+francais+anglais+espagnol) ;  // definition de total 
       moyenne = (total)/6; 
    	printf("votre moyenne est de %lf",moyenne);										// definition de moyenne 
    
    
    }


    ci quelq'un peut m'eclairer ce serait gentil Merci !

    -
    Edité par Croixpizza59 10 avril 2019 à 21:04:05

    • Partager sur Facebook
    • Partager sur Twitter

    Programmeur débutant a mes heures perdus.

      10 avril 2019 à 21:41:55

      Bonjour,

      moyenne désigne une fonction (on voit cela ligne 11 et ligne 38).
      Ligne 44 et ligne 45, moyenne est utilisée comme si c'était une variable numérique. Ça ne peut pas être 2 choses différentes!

      Attention, le format du scanf pour lire un double est "%lf". Pour le printf d'un double ou d'un float, le format est "%f". Tu as fait l'inverse.
      Attention, tu mélanges des types double et des type int.

      • Partager sur Facebook
      • Partager sur Twitter
      Bjarne Stroustrup : "C++ has become too expert friendly"
        12 avril 2019 à 14:11:52

        Quelques conseils :

        - indente correctement ton code. Je crois que sur Code::Blocks quelque part dans les menus tu as une option pour réindenter ton code. Là ça n'a pas trop d'importance, mais quand ton programme fera 1000 lignes tu verras que ça va beaucoup y jouer sur la lisibilité - et il vaut mieux que tu prennes l'habitude dès maintenant d'indenter correctement.

        - Je te conseille de relire le cours sur les fonctions, et de recoder toi même les exemples au fur et à mesure que tu les rencontres. Parmi les choses qui ne vont pas :

        --- tu définis la fonction moyenne mais tu ne l'utilises pas dans ton main
        --- évite d'utiliser des variables globales. Je dirais même, à ton niveau : n'utilise aucune variable globale, et force toi à organiser ton code autrement. Tes variables histoire/maths/physique/etc.. devraient être dans ton main, et tu devrais appeler la fonction moyenne en utilisant ces variables là. Pourquoi ne pas utiliser de variables globales : plus tard tu te rendras compte que plus tu rajoutes de variables globales, plus ton programme devient difficile à déboguer et à maintenir.
        --- Ton paramètre somme de ta moyenne ne sert à rien, vu que tu lui assignes une valeur directement dans la fonction. Je te conseille de relire le cours sur les fonctions si tu ne comprends pas ce qui ne va pas.

        - Si tu veux mettre des commentaires, je te propose plutôt de le faire dans ce style là qui est plus lisible :

        #include <stdio.h>
        #include <stdlib.h>
        
        // initialisation de toutes les matieres
        double histoire = 0;
        double maths = 0;
        double physique = 0;
        double anglais = 0;
        double espagnol = 0;
        double francais = 0;
        
        double moyenne(int total);
        
        int main(int argc, char const *argv[])
        {
          // demande des matieres
          printf("Mettez votre moyenne de maths\n");
          scanf("%f",&maths);
          printf("Mettez votre moyenne de physique\n");
          scanf("%f",&physique);
        
          printf("Mettez votre moyenne de francais\n");
          scanf("%f",&francais);
        
          printf("Mettez votre moyenne d'anglais\n");
          scanf("%f",&anglais);
        
          printf("Mettez votre moyenne d'espagnol\n");
          scanf("%f",&espagnol);
        
          printf("Mettez votre moyenne d'histoire\n");
          scanf("%f",&histoire);
        
          return 0;
        }
        
        double moyenne(int total)
        {
          total = (histoire+maths+physique+francais+anglais+espagnol) ;
          moyenne = (total)/6;
          printf("votre moyenne est de %lf",moyenne);
        }

        Au passage : j'ai réindenté correctement, et retiré tous les commentaires inutiles du style "fonction moyenne avec comme parametre total" : quand tu vois que ton commentaire ne fait que paraphraser ce que tu écris, ce n'est en général pas une bonne idée de le garder.

        Dans le cours l'auteur utilise beaucoup ce genre de commentaire pour faire comprendre au lecteur qu'il s'agit par exemple d'une définition de fonction - mais toi quand tu écris ou lis un code, tu sais reconnaitre les définitions de fonction etc.., donc tu n'as pas besoin de ce genre de commentaire.

        Par contre, tes deux commentaires "demande des matieres" et "initialisation des matieres" sont utiles, car elles décrivent le but de ton code. Et c'est ça que tu devrais viser quand tu commentes : au lieu de décrire ce chaque ligne fait, décrit plutôt quel est le but de ces lignes.

        • Partager sur Facebook
        • Partager sur Twitter
          16 avril 2019 à 19:12:52

          Ok , merci beaucoup pour tes conseils !

          -
          Edité par Croixpizza59 16 avril 2019 à 19:13:15

          • Partager sur Facebook
          • Partager sur Twitter

          Programmeur débutant a mes heures perdus.

            19 avril 2019 à 21:07:28

            @potterman28wxcv: tu n'appelles jamais la fonction moyenne.

            A quoi sert le paramètre total?

            D'autre part, une fonction moyenne doit calculer la moyenne et rien d'autre. Je ne mettrais pas l'affichage du résultat dans la fonction.

            • Partager sur Facebook
            • Partager sur Twitter

            Calculateur de moyenne debutant

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown