calcule de moyenne C
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

calcule de moyenne C



  1. #1
    invite11df21b5

    calcule de moyenne C


    ------

    Bonjour a tous, je cherche a faire un programme en console: voila le schema, c'est un programme qui calcule la moyenne de plusieurs eleves d'une classe connaissant le nombre d'eleves, le nombres de matieres et le coefficient de chaque matieres, le probleme que j'ai est que, lorsqu'on entre les matieres et les coefficients du premier eleve, cela calcule comme il faut mais par la suite les calcules sont erronés. Je vais vous montrer le code source, compiler le entrer par exemple "12" comme note de chaque matiere, et "1" comme coefficient; pour le premier eleve la moyenne obtenue est "12" normale. Ok, maintenant pour le second, entre comme note "10" et "1" comme coefficient, voyez le resultat, je ne comprend pas, pourtant mon code semble correcte. Ce serait aimable de votre part merci:





    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(int argc, char *argv[])
    {
        int coef[100];
        int note[100];
        int eff,nbmat,i,k;
        int somecoef=0;
        int moy=0;
        int gene;
        printf("-------------Programme de calcul des moyennes de eleves---------------------\n\n");
        printf("Quel est l'effectif de la classe:  ");
        scanf("%d",&eff);
        while(eff<=0)
        {
                     printf("Entrer un effectif correcte:  ");
                     scanf("%d",&eff);
                     }
                     printf("\nQuel est le nombre de matiere:     ");
                     scanf("%d",&nbmat);
                     while(nbmat<=0)
                     {
                                    printf("Veuillez entrer un nombre correcte:  ");
                                    scanf("%d",&nbmat);
                                    }
                                    for(i=1;i<=eff;i++)
                                    {
                                                       printf("\n\n||||eleve %d||||| \n\n",i);
                                                       for(k=1;k<=nbmat;k++)
                                                       {
                                      printf("\nNote de la matiere %d:  ",k);
                                      scanf("%d",&note[k]);
                                      while(note[k]<0 || note[k]>20)
                                      {
                                                      printf("Entrer une note valide:  ");
                                                      scanf("%d",&note[k]);
                                                      }
                                      printf("Coefficient de la matiere %d:   ",k);
                                      scanf("%d",&coef[k]);
                                      while(coef[k]<=0)
                                      {
                                                       printf("Il faut un vrai coefficient:  ");
                                                       scanf("%d",&coef[k]);
                                                       }
                                      somecoef=somecoef+coef[k];
                                      moy=moy+(note[k]*coef[k]);
                                      
                                      }  
                                      gene=moy/somecoef;
                                      printf("La moyenne de leleve %d est: %d\n\n",i,gene);                
                                      
                                                       }
      
      
      system("PAUSE");	
      return 0;
    }

    -----
    Dernière modification par JPL ; 26/01/2013 à 21h49. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    Jack
    Modérateur

    Re : calcule de moyenne C

    Ton indentation est dégueu. J'ai failli arrêter dès la ligne suivante:

    Code:
    while(eff<=0)
    Ensuite, tu devrais savoir que les indices d'un tableau commencent à 0.

    A+

  3. #3
    invitebfa43842

    Re : calcule de moyenne C

    Bonjour,
    Ok fait attention aux indices des tableaux et aux boucles:
    voila le code avec quelques modifications il me semble correct, mais vérifie le!
    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void)
    {
        int coef[100];
        int note[100];
        int eff,nbmat,i,k;
        int somecoef;
        float moy;
        float gene;
        printf("-------------Programme de calcul des moyennes de eleves---------------------\n\n");
        printf("Quel est l'effectif de la classe:  ");
        scanf("%d",&eff);
        //=> efff+nbre de matière
        while(eff<=0)
        {
                     printf("Entrer un effectif correcte:  ");
                     scanf("%d",&eff);
                     }
                     printf("\nQuel est le nombre de matiere:     ");
                     scanf("%d",&nbmat);
                     while(nbmat<=0)
                     {
                                    printf("Veuillez entrer un nombre correcte:  ");
                                    scanf("%d",&nbmat);
                                    }
                                    
                                    // //===> calcul pour tous les élèves
                                    for(i=1;i<=eff;i++)
                                    {
                                      printf("\n\n||||eleve %d||||| \n\n",i);
                                      
                                      
                                    //===> début calcul pour chaque elève
                                     somecoef=0;
                                     moy=0;
                                     gene=0;
                                     for(k=0;k<nbmat;k++)
                                                       {
                                      //notes                                     
                                      printf("\nNote de la matiere %d:  ",k+1);
                                      scanf("%d",&note[k]);
                                      while(note[k]<0 || note[k]>20)
                                      {
                                                      printf("Entrer une note valide:  ");
                                                      scanf("%d",&note[k]);
                                                      }
                                      //coef
                                      printf("Coefficient de la matiere %d:   ",k+1);
                                      scanf("%d",&coef[k]);
                                      while(coef[k]<=0)
                                      {
                                                       printf("Il faut un vrai coefficient:  ");
                                                       scanf("%d",&coef[k]);
                                                       }
                                    //opérations de calcul
                                                       
                                      somecoef+=coef[k];
                                      moy+=(note[k]*coef[k]);
                                       
                                       }// fin calcul pour chaque elève 
                                        gene=moy/somecoef;
                                      printf("La moyenne de leleve %d est: %f\n\n",i,gene); 
                                                  
                                      
                                                       }//fin calcul pour tous les élèves
      
      
      system("PAUSE");	
      return 0;
    }
    A+

  4. #4
    polo974

    Re : calcule de moyenne C

    dans le concept: c'est bizarre une classe dont chaque élève a des coeffs pouvant être différents, non? ...

    regarde quand ces valeurs sont initialisées:
    Code:
                somecoef=somecoef+coef[k];
                moy=moy+(note[k]*coef[k]);

    bref une boucle pour les coeffs une fois pour toute puis une boucle pour les élèves.
    initialiser les variables "intégrantes"

    et éviter cet affreux:
    Code:
        system("PAUSE");
    avantageusement remplacé par un:
    Code:
        getchar();    getchar();
    (je te laisse trouver (et expliquer) pourquoi 2 getchar() à suivre... )


    au fait, pour éviter de répéter du code (les scanf ici), optimise l'utilisation des for et while:
    Code:
            printf("Coefficient de la matiere %d:   ",k);
            while(scanf("%d",&coef[k]), coef[k]<=0)
            {
                printf("Il faut un vrai coefficient:  ");
            }
    et au final, à quoi sert d'avoir un tableau pour note ? ? ?
    Jusqu'ici tout va bien...

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

    Re : calcule de moyenne C

    Bonjour, je vais aller dans le même sens que Polo, et même un peu plus loin.
    Il y a une trentaine d'élèves dans la classe, et une dizaine de matières.
    Ca fait beaucoup de chiffres à taper.
    Imaginez par exemple qu'arrivé au 29è élève, vous vous rendiez compte qu'il y a une faute pour le 2è élève.
    Donc, pour moi, il faut procéder en 2 temps
    1- rentrer les données avec possibilité d'interrompre puis de continuer, de corriger des fautes, de se relire etc.
    2- effectuer le calcul de moyenne proprement dit et imprimer les résultats.
    Pour la seconde partie, je vous conseille vivement d'écrire l'algorithme, en français, sur un papier, avant de commencer toute programmation.
    Pour vos essais de la partie 2, faites comme si vous aviez déjà entré toutes les données. Vous résoudrez la partie 1 après.

    @Polo, à propos du system("Pause"), petit gag, sur un autre forum, et même contexte, j'ai eu la même réaction, elle m'a été vigoureusement reprochée.

    Bonne continuation.

  7. #6
    invite43901482

    Re : calcule de moyenne C

    @Polo, à propos du system("Pause"), petit gag, sur un autre forum, et même contexte, j'ai eu la même réaction, elle m'a été vigoureusement reprochée.
    Elle ne devrait pas être contestée à partir du moment où un code est présenté sur un forum, le code testé doit être portable.

    Maintenant si c'est simplement pour lui, il fait ce qu'il veut, ça en reste pas moins que c'est moche!

  8. #7
    Dlzlogic

    Re : calcule de moyenne C

    Citation Envoyé par fred1599 Voir le message
    Elle ne devrait pas être contestée à partir du moment où un code est présenté sur un forum, le code testé doit être portable.

    Maintenant si c'est simplement pour lui, il fait ce qu'il veut, ça en reste pas moins que c'est moche!
    Probablement que je ne suis mal exprimé, bien-sûr que c'est moche, mais sur d'autre forum on semble penser que gerchar() est trop compliqué.
    C'était juste pour rajouter un point d'humour dans cette discussion.

  9. #8
    polo974

    Re : calcule de moyenne C

    Citation Envoyé par Dlzlogic Voir le message
    Bonjour, je vais aller dans le même sens que Polo, et même un peu plus loin.
    ...
    Oui, pour de l'utile fonctionnel mais là il doit s'agir d'un certain niveau dans l'exercice, ensuite, on doit pouvoir ajouter l'ergonomie.
    ...

    @Polo, à propos du system("Pause"), petit gag, sur un autre forum, et même contexte, j'ai eu la même réaction, elle m'a été vigoureusement reprochée.

    Bonne continuation.
    ben oui, il y en a qui sont vigoureusement bouchés...

    outre la portabilité, faire un appel système juste pour attendre un appui clavier, c'est bourrin...
    Jusqu'ici tout va bien...

  10. #9
    Dlzlogic

    Re : calcule de moyenne C

    Bonjour Polo,
    En fait mon conseil va plus loin qu'un éventuel souci d'ergonomie.
    A ce niveau d'apprentissage, il me parait utile de dissocier "saisie" et "calcul".
    Ceci rejoint votre question : "pourquoi un tableau pour 'note'", de même que le coefficient variable pour chaque élève.
    Bonne journée.

Discussions similaires

  1. eliminer une variable après avoir calculé une moyenne
    Par invitee8508421 dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 25/09/2011, 12h11
  2. Réponses: 4
    Dernier message: 07/11/2010, 14h20
  3. calcule d'une puissance moyenne d'un signal
    Par invite8a7e1f83 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 06/11/2010, 17h35
  4. Réponses: 7
    Dernier message: 25/12/2009, 15h58
  5. Comment calcule-t-on une moyenne d'écart type?
    Par invitec3f2cd4b dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 05/04/2007, 13h30