Calcul de moyennes

Résolu/Fermé
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019 - Modifié par teutates le 19/03/2016 à 01:41
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019 - 21 mars 2016 à 17:23
bonsoir ,
je ne suis pas tres doue dans la programmation donc j'ai decider de creer un programme qui calcul la moyennes de chaque eleves selon les matieres dans les quelles il a composer et le coefficient de la matiere. . mon probleme se trouves au niveau de la fonction void_moyenne . JE NE SAIS PAS COMMENT FAIRE LE CALCUL POUR CALCULER LAS MOYENNES DES ETUDIANTS

#include <stdio.h>
#include <stdlib.h>
int a,n,i,j;
 typedef struct
 {    char classe[100];
     wchar_t nom[100];
     wchar_t prenom[200];
     int matricule;
     float note[150];
     float coef;
     float p;
     float moy;
 }Ingenieur;
 typedef Ingenieur TABLEING[0];
 TABLEING t1;
  void presentation();
  void lire();
  void saisie();
  void moyenne();
  void moyennegeneral();

 int main()
 {
     printf("bienvenue dans le programme de calcul de moyenne\n");
     printf("voulez-vous calculer la moyenne de combien ingenieur??\n");scanf("%d",&a);
     printf("l'ingenieur a t-il compose dans combien de matiere?\n");scanf("%d",&n);
     printf("renseigner les informations de la liste\n");
     presentation();
     saisie();printf("\n");
     lire();printf("\n");
     moyenne();printf("\n");
printf("travail achever..............MERCI\n");
 }
 void presentation()
 {
for(i=0;i<a;i++)
     {
        printf("entrez le nom de l'ingenieur %d\n ",i+1);scanf("%s",&t1[i].nom);
        printf("entrez le prenoms de l'engenieur %d\n",i+1);scanf("%s",&t1[i].prenom);
        printf("entrez le matricule de l'ingeieur %d\n",i+1);scanf("%d",&t1[i].matricule);
        printf("entrez la classe de l'ingenieur %d\n",i+1);scanf("%s",&t1[i].classe);
     }
     printf("voici la liste\n");printf("\n");
     for(i=0;i<a;i++)
     {
        printf("NOM: %s PRENOMS: %s MATRICULE: %dINP  CLASSE: %s",t1[i].nom,t1[i].prenom,t1[i].matricule,t1[i].classe);printf("\n");
     }
}
void saisie()
{   for(i=0;i<a;i++)
       {  printf("LES DIFFERENTES MOYENNES OBTENUES PAR L'INGENIEUR DANS CHAQUE MATIERE SONT:\n");printf("\n");
          printf(" la moyenne obtenue par l'ingenieur %s\n ",t1[i].nom );printf("\n");
       for(j=0;j<n;j++)
    {
        printf("dans la matiere : %d\n ", j+1);printf("\n");scanf("%f",&t1[i].note[j]);
        printf(" entrer le coefficient : %d\n",j+1);printf("\n");scanf("%f",&t1[i].coef);
    }
       }
}
void lire()
{
     printf("les ingenieurs et leur differentes moyennes suivit des coefficients \n");
    for(i=0;i<a;i++)
       {  printf("l'ingenieur : %s %s\n",t1[i].nom,t1[i].prenom );
           for(j=0;j<n;j++)
           {   t1[i].p=t1[i].coef*t1[i].note[j];
               printf(".........MOYENNE COEFFICIENTE.........:%f",t1[i].p) ;

           }
       }
}
void moyenne()
{   printf("voici les moyennes des differents ingeniieurs \n");
 for(i=0;i<a;i++)
 {
      printf("l'ingenieur : %s %s\n",t1[i].nom,t1[i].prenom );
      for(j=0;j<n;j++)
      {   float m;
          float tcoef;
          m = t1[i].p+t1[i].p;
          m=m+m;
          tcoef=t1[i].coef+t1[i].coef;
          tcoef=tcoef+tcoef;
          t1[i].moy=( m/tcoef);
          printf("la moyenne de l'ingenieur %s %s\n",t1[i].nom,t1[i].prenom);
          printf("est %f",t1[i].moy);

      }

 }

}
A voir également:

2 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
19 mars 2016 à 14:28
Bonjour,

Ligne 3: définition de globales.
~ Quand une globale n'est pas indispensable, elle ne doit pas exister
~ une variable doit avoir un nom explicite.
~ éviter de déclarer plusieurs variables sur une même ligne.
Après lecture de cette seule ligne je connais déjà la moyenne des notes de l'étudiant.
Lignes 14 et 15: Même commentaires avec en plus :
~ Comment créer une variable qui si elle est utilisée peut tout casser (relit toi).
Lignes 16 à 20: des fonctions sans paramètre :
~ une fonction, en plus d'être nommée clairement, doit recevoir les données nécessaires et retourner les données calculées. Cela limite les erreurs et améliore la lisibilité. exemple: void saisirNotes( Ingenieur tableDesIng[], int nbMaxIng, int nbMaxNotes )
Ensuite, le code n'est pas si mal écrit ni mal posé, je pense que tu es plus doué en programmation que tu ne le penses car tu l'as écrit malgré les nommages qui rendent la lecture très pénible. Je pense qu'améliorer la lisibilité est un minimum afin que nous puissions mieux t'aider.

Cdlt Dalfab
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
Modifié par akybienvenu le 19/03/2016 à 23:09
bonsoir ,
merci pour tes suggestions , je vais corriger tous ce que vous avez dis.. rendre mon programme lisible et le remettre pour que vous m'aidiez .
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
Modifié par akybienvenu le 21/03/2016 à 13:19
bonsoir,
j'ai revu le programme et je pense qu'il es lisible ,

maintenant mes soucis sont au niveau des fonction moyenne et fonction lire
-lorsque je fais entrer les coefficients puis la moyenne a l'affichage il n'affiche que la dernière valeur calculer eux lieu de m'afficher tous.
-maintenant comme j'ai utilise des boucle pour mon travail je ne sais pas comment calculer la somme des notes coefficienter selon le nombre de matière?parceque je n'ai pas de definir le max de matieres c'est l'utilisateur qui choisir le nombre qu'il veux
merci




int NbreIngenieurs;
int NbreDeMatieres;
int i;
int j;
typedef struct
{ char classe[100];
wchar_t nom[100];
wchar_t prenom[200];
int matricule;
float note[150];
float coefficient;
float NoteCoefficienter;
float LaMoyonne;
}Ingenieur;
typedef Ingenieur TableDesIng[0];
TableDesIng t1;
void presentation();
void lire();
void SaisirNotes();
void moyenne();

int main()
{
printf("bienvenue dans le programme de calcul de moyenne\n");
printf("voulez-vous calculer la moyenne de combien ingenieur??\n");scanf("%d",&NbreIngenieurs);
printf("l'ingenieur a t-il compose dans combien de matiere?\n");scanf("%d",&NbreDeMatieres);
printf("renseigner les informations de la liste\n");
presentation();
SaisirNotes();printf("\n");
lire();printf("\n");
moyenne();printf("\n");
printf("travail achever..............MERCI\n");
}
void presentation()
{
for(i=0;i<NbreIngenieurs;i++)
{
printf("entrez le nom de l'ingenieur %d\n ",i+1);scanf("%s",&t1[i].nom);
printf("entrez le prenoms de l'engenieur %d\n",i+1);scanf("%s",&t1[i].prenom);
printf("entrez le matricule de l'ingeieur %d\n",i+1);scanf("%d",&t1[i].matricule);
printf("entrez la classe de l'ingenieur %d\n",i+1);scanf("%s",&t1[i].classe);
}
printf("voici la liste\n");printf("\n");
for(i=0;i<NbreIngenieurs;i++)
{
printf("NOM: %s PRENOMS: %s MATRICULE: %dINP CLASSE: %s",t1[i].nom,t1[i].prenom,t1[i].matricule,t1[i].classe);printf("\n");
}
}
void SaisirNotes()
{ for(i=0;i<NbreIngenieurs;i++)
{ printf("LES DIFFERENTES MOYENNES OBTENUES PAR L'INGENIEUR DANS CHAQUE MATIERE SONT:\n");printf("\n");
printf(" la moyenne obtenue par l'ingenieur %s\n ",t1[i].nom );printf("\n");
for(j=0;j<NbreDeMatieres;j++)
{
printf("dans la matiere : %d\n ", j+1);printf("\n");scanf("%f",&t1[i].note[j]);
printf(" entrer le coefficient : %d\n",j+1);printf("\n");scanf("%f",&t1[i].coefficient);
}
}
}
void lire()
{
printf("les igenieurs et leur differentes moyennes suivit des coefficients \n");
for(i=0;i<NbreIngenieurs;i++)
{ printf("l'ingenieur : %s %s\n",t1[i].nom,t1[i].prenom );
for(j=0;j<NbreDeMatieres;j++)
{ t1[i].NoteCoefficienter=t1[i].coefficient*t1[i].note[j];
printf(".........MOYENNE COEFFICIENTER.........:%f",t1[i].NoteCoefficienter) ;

}
}
}
void moyenne()
{ printf("voici les moyennes des differents ingeniieurs \n");
for(i=0;i<NbreIngenieurs;i++)
{
printf("l'ingenieur : %s %s\n",t1[i].nom,t1[i].prenom );
for(j=0;j<NbreDeMatieres;j++)
{ float TotalDesNoteCoefficienter;
float TotalDesCoefficient;

TotalDesNoteCoefficienter= t1[i].NoteCoefficienter+t1[i].NoteCoefficienter;

TotalDesCoefficient=t1[i].coefficient+t1[i].coefficient;

t1[i].LaMoyonne=( TotalDesNoteCoefficienter/TotalDesNoteCoefficienter);

printf("la moyenne de l'ingenieur %s %s\n",t1[i].nom,t1[i].prenom);
printf("est %f",t1[i].LaMoyonne);

}

}

}
0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
Modifié par Dalfab le 21/03/2016 à 15:14
Bonjour, il manque les balises pour le code
Et il semblerait que mon commentaire au sujet de t1[] n'a pas été pris en compte;
t1 est un tableau de 0 ingénieur d'après ta définition, il ne peut donc pas contenir plus de 0 ingénieur, tout tentative produit une fonctionnement aléatoire ou un plantage.

Je cite quand même la fonction moyenne()
void moyenne()  {
   printf("voici les moyennes des differents ingenieurs \n"); 
   for ( i=0 ; i<NbreIngenieurs ; i++ )  { 
      printf( "l'ingenieur : %s %s\n" , t1[i].nom , t1[i].prenom ); 
      for ( j=0 ; j<NbreDeMatieres ; j++ ) {
         // les coefficients devraient venir des Matières, hors il n'y pas de table matière mais un coefficient défini par Ingénieur, !!!
         float TotalDesNoteCoefficienter = 0;  // la valeur initiale est vitale
         float TotalDesCoefficient = 0; // la valeur initiale est vitale

         TotalDesNoteCoefficienter += t1[i].Note[j]*t1[i].coefficient; // cumul des notes coefficientées
         TotalDesCoefficient += t1[i].coefficient;  // coef curieux, à corriger!!
      } // on ferme la boucle for ici
      t1[i].LaMoyonne= TotalDesNoteCoefficienter/TotalDesNoteCoefficienter;
      printf( "la moyenne de l'ingenieur %s %s\n" , t1[i].nom , t1[i].prenom );
      printf( "est %f" , t1[i].LaMoyonne );
   }
}
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
21 mars 2016 à 17:22
BONSOIR Dalfab,
merci pour ton aide j'ai travailler encore sur le programme ca marche
encore merci
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
21 mars 2016 à 17:23
je vais beaucoup te fatiguer souvent , par ce que je suis vraiment passionne de l'informatique
0