IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Résultat dans mon code.


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Résultat dans mon code.
    Bonjour, Je programme en C depuis peu de temp et j'essaie de coder un petit programme en c qui affiche le nom, prénom, l'âge des élèves d'une classe ainsi que leur notes scolaires et la moyenne de celles-ci. Mon problème et, que je ne trouve pas comment on fais la somme des notes de chaque élèves dans le champ notes d'un tableau de structure, et ensuite afficher la moyenne de cette somme.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    #include <stdio.h>
    #include <string.h>
     
    #define TAILLE_NOM 10
    #define TAILLE_PRENOM 2*TAILLE_NOM
    #define NB_NOTES 5
    #define MAX_ETUDIANTS 50
     
    main()
    {
      int i,j, nbelements, nbeleves,finir_saisie ;
     
     
      /* declaration du type etudiant */
      struct etudiant {
                        char nom[TAILLE_NOM]       ;
                        char prenom[TAILLE_PRENOM] ;
                        float notes[NB_NOTES];
                        float somme[NB_NOTES];
                        int age;                  
                      } ;
     
      /* declaration du tableau des eleves */
      struct etudiant tab_eleves[MAX_ETUDIANTS];
     
      /* === DEBUT DU PROGRAMME === */
      i=0;
      finir_saisie=0;
      /* boucle de saisie */
      while (! finir_saisie)
      {
       printf("Entrez un nom ( nom=fin   pour terminer):");
       scanf("%s",tab_eleves[i].nom);
     
       finir_saisie=((strcmp(tab_eleves[i].nom,"fin"))==0);
     
       /* si la saisie n'est pas finie */
       /* on demande le reste des informations */
       if (! finir_saisie)
       {   
         printf("Entrez un prénom:");
         scanf("%s",tab_eleves[i].prenom);
     
         printf("Entrez un âge:");
         scanf("%d",&tab_eleves[i].age);
     
         /* --- saisie des notes --- */
         printf("Entrez les %d notes :", NB_NOTES);
     
         for (j=0; j<NB_NOTES; j++)
         {
          scanf("%f", &tab_eleves[i].notes[j]);
          tab_eleves[i].somme[j] += tab_eleves[i].notes[j];
     
          /* --- calcul de la moyenne --- */
         tab_eleves[i].somme[j] /=  NB_NOTES;
         }  
         i++ ;
       }
       printf("\n");
      } 
     
     
      /* on met a jour la variable de controle du tableau */ 
      nbeleves = i ;
      nbelements = j;
     
      /* boucle de verification */
      printf("\n----- Vérification saisie ------\n");
     
      for (i=0; i<nbeleves; i++)
      {
         printf("\neleve %2d : ",i);
         printf("%10s %10s ",tab_eleves[i].nom,tab_eleves[i].prenom);
         printf("%2d \n", tab_eleves[i].age);
         printf("Notes :");
         for (j=0; j<NB_NOTES; j++)
          printf("%6.2f", tab_eleves[i].notes[j]);
          printf("\nMoyenne :");
          for (j=0; j<nbelements; j++)
          {
           printf("%6.2f", tab_eleves[i].somme[j]);
          }
          printf("\n");
      }
      printf("\n");
    }
    et voici ce que j'obtient comme résultat :

    Entrez un nom ( nom=fin pour terminer):nom1
    Entrez un prénom:prenom1
    Entrez un âge:30
    Entrez les 5 notes :10
    12.5
    15
    15.5
    20

    Entrez un nom ( nom=fin pour terminer):nom2
    Entrez un prénom:prenom2
    Entrez un âge:35
    Entrez les 5 notes :12
    15
    10
    16
    9

    Entrez un nom ( nom=fin pour terminer):fin


    ----- Vérification saisie ------

    eleve 0 : nom1 prenom1 30
    Notes : 10.00 12.50 15.00 15.50 20.00
    Moyenne : 2.00 2.50 3.00 3.10 4.00

    eleve 1 : nom2 prenom2 35
    Notes : 12.00 15.00 10.00 16.00 9.00
    Moyenne : 2.40 3.00 2.00 3.20 1.80
    Le résultat que j'aimerez obtenir et du genre : moyenne élève1 = 14,6 et moyenne1 élève2 = 12,4.

    Quelqu'un pourrait-il m'indiqué ce qui foire dans mon code. Merci.

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour,

    pourquoi un tableau de somme ?
    ta somme est un float unique dans lequel ton ajoute chacune des notes, puis que tu divises par NB_NOTES;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
     
    #include <stdio.h>
    #include <string.h>
     
    #define TAILLE_NOM 10
    #define TAILLE_PRENOM 2*TAILLE_NOM
    #define NB_NOTES 5
    #define MAX_ETUDIANTS 50
     
    int main( void )
    {
        int i, j, nbelements, nbeleves, finir_saisie = 0 ;
     
        /* declaration du type etudiant */
        struct etudiant {
                char nom[TAILLE_NOM]       ;
                char prenom[TAILLE_PRENOM] ;
                float notes[NB_NOTES];
                float somme;
                int age;
            } ;
     
        /* declaration du tableau des eleves */
        struct etudiant tab_eleves[MAX_ETUDIANTS];
     
        /* === DEBUT DU PROGRAMME === */
        i = 0;
        finir_saisie = 0;
        /* boucle de saisie */
        while ( ! finir_saisie )
        {
            printf( "Entrez un nom ( nom = \"fin\" pour terminer):" );
            scanf( "%s", tab_eleves[i].nom );
     
            finir_saisie = (( strcmp( tab_eleves[i].nom, "fin" ) ) == 0 );
     
            /* si la saisie n'est pas finie */
            /* on demande le reste des informations */
            if ( ! finir_saisie )
            {
                printf( "Entrez un prinom:" );
                scanf( "%s", tab_eleves[i].prenom );
     
                printf( "Entrez un bge:" );
                scanf( "%d", &tab_eleves[i].age );
     
                /* --- saisie des notes --- */
                printf( "Entrez les %d notes :", NB_NOTES );
     
                tab_eleves[i].somme = 0.;
     
                for ( j = 0; j < NB_NOTES; j++ )
                {
                    scanf( "%f", &tab_eleves[i].notes[j] );
                    tab_eleves[i].somme += tab_eleves[i].notes[j];
                }
     
                /* --- calcul de la moyenne --- */
                tab_eleves[i].somme /=  NB_NOTES;
     
                i++ ;
            }
     
            printf( "\n" );
        }
     
     
        /* on met a jour la variable de controle du tableau */
        nbeleves = i ;
        nbelements = j;
     
        /* boucle de verification */
        printf( "\n----- Virification saisie ------\n" );
     
        for ( i = 0; i < nbeleves; i++ )
        {
            printf( "\neleve %2d : ", ( i + 1 ) );
            printf( "%10s %10s ", tab_eleves[i].nom, tab_eleves[i].prenom );
            printf( "%2d \n", tab_eleves[i].age );
            printf( "Notes :" );
            for ( j = 0; j < NB_NOTES; j++ )
                printf( "%6.2f", tab_eleves[i].notes[j] );
     
            printf( "\nMoyenne :" );
     
            printf( "%6.2f", tab_eleves[i].somme );
     
            printf( "\n" );
        }
     
        printf( "\n" );
     
        return EXIT_SUCCESS;
    }
    un truc du genre.

    Par contre 2 remarques un main a 2 mainieres de s ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int main( int argc, char** argv )
    /* ou */
    int main( void )
    et c'est tout, toute autre forme est a bannir.

    2eme, soigne tes affichages ca fait tout de suite plus soigné et pro.

    voila, bon courage.
    "vaste programme"

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Ça marche
    Merci pour ta réponse BainE, c'est vrai que mon code au vu du tien est un peu pâle niveau présentation , mais bon, j'ai encore du chemin à faire. Ton code est clair et me permet de voirs mes erreurs. Je ne sais pas pourquoi j'ai fais un tableau de somme, sûrement que j'ai du me mélanger les pinceaux dans tous ceux qui est tableaux et structures .
    Merci encore pour ta réponses. C'est le résultat que j'attendais.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA][Débutant][export]erreurs dans mon code?
    Par Christophe93250 dans le forum Access
    Réponses: 4
    Dernier message: 06/01/2006, 19h52
  2. Projet VB v6 : utilisation de requête SQL dans mon code
    Par MITCH31 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/10/2005, 15h02
  3. Réponses: 10
    Dernier message: 06/10/2005, 22h25
  4. Réponses: 1
    Dernier message: 21/02/2005, 12h40
  5. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo