Partage
  • Partager sur Facebook
  • Partager sur Twitter

Programme de traitement de notes

Une omission involontaire certaine

    24 septembre 2018 à 15:05:56

    Bonjour à tous, j'ai à faire un exercice me demandant de corriger les erreurs dans un programme, notamment en changeant les noms des variables avec la norme camelCase.

    Il est de fait que cela fait une semaine que je reviens régulièrement à l'exercice ,mais le débugger m'annonce plus de 19 erreurs tournant la plupart du temps autour de la même problématique :

    (il semblerait que cela soit au niveau de la déclaration des structures des données, auriez-vous une idée ?)

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct etudiant
    etudiant;
    struct etudiant
    {
        char nom[50];
        char prenom[50];
        float notes[3];
        float moy;
    };
    
    //  DECLARATION DES VARIABLES GLOBALES
    
    int NB_E, rang_etud_trouve , rep;
    
    
    
    
    //PROCEDURES ET FONCTIONS UTILISEES puisque on commence par le main()
    
    //externe void getchar();
    
    void  Init(etudiant[],int NB_E); // met la moyenne à -1
    void  Insertion(etudiant[],int NB_E); //remplie le tableau des etudiants
    void  Affichage(etudiant[],int NB_E);  // Affiche tous les etudiants, leurs notes et leur moyenne
    void  AffichageEtu(etudiant[],int NB_E);        // Affiche l'etudiant du rang e-1, ses notes et sa moyenne
    void  Recherche(etudiant[],int NB_E, char *lenom); // recherche d'un etudiant par le nom (sensible à la casse)
    float CalculMoyenne(float listeNote[],int n);       // calcule la moyenne d'un tableau des 3 notes
    
    //  Programme pricipal
    int main()
    {
        int k, choixMenu;  // Variables du main
        char nom[50]; // Nom etudiant à chercher
        etudiant etudiants;
    
    
        printf("Saisir le nombre d'eleves de la classe \n");
        scanf("%d", &NB_E);
    
        Init(etudiant[],NB_E); // appel de la procedure init
    
    	choixMenu=99;
        while( choixMenu != 0 )
        {
            system( "cls" );
    
            printf("------------------------------\n");
            printf("-- Gestion des etudiants\n");
            printf("------------------------------\n\n");
    
            printf("\n\n------- Menu Principal -------\n\n");
            printf("1 - Insertion des etudiants\n");
            printf("2 - Affichage des etudiants\n");
            printf("3 - Rechercher un etudiant\n");
            printf("0 - Quitter");
            printf("\n\n------------------------------\n\n");
    
    
            // Choix du menu
            printf("Votre choix : ");
            scanf("%d", &choixMenu );
    
    
            // Gestion du choix
    
            switch( choixMenu )
            {
                case 1 : {
                            Insertion(etudiant[],NB_E);
    
                            for (k=0; k<NB_E; k++)
                            {
                            etudiant[k].moy = CalculMoyenne(etudiant[k].notes,3);
                            }
                           }; break;
    
    
                case 2 : {
                            Affichage(etudiant[],NB_E); break;
                         }
    
    
                case 3 : {      printf( "Taper le Nom a chercher : " );
                                scanf( "%s",nom);
                                Recherche(etudiant,NB_E,nom);
    
                                printf("\nAfficher le detail des notes ? Repondre par 0 pour NON ou 1 pour OUI\n");
    
                                scanf("%d",&rep);
    //                                printf("**** avant IF rep = %d *****\n",rep);
    //                                printf( "\n***** Taper sur une touche pour continuer avant le detail.... ***** " );
                                if (rep==1)
                                {
                                    AffichageEtu(etudiant,rang_etud_trouve);
                                }
                         } ; break;
    
                case 0 : printf("\n\nProgramme termine. Merci Au revoir"); break;
    
                default : printf( "Mauvais choix...Recommencez\n" );
            }
        }
    
    	return 0;
    }
    
    
    
    //  INITIALISATION DE LA MOYENNE A -1//
    
    void Init(etudiant[],int NB_E)
    {
        int i;
    // On met -1 dans le champ moyenne//
    
        for( i = 0 ; i < NB_E ; i++ )
        {
            etudiant[i].moy = -1;
        }
    }
    //  INSERTION
    void Insertion(etudiant[],int NB_E)
    {
        int i, j;
        float note;
    
        for( i = 0 ; i < NB_E ; i++ )
        {
            system( "cls" );
    
            printf( "\n---- Etudiant %d ----\n", i + 1 );
            // Nom //
            printf( "Nom : " );
            scanf( "%s", etudiant[i].nom);
    
            // Prenom //
            printf( "Prenom : " );
            scanf( "%s", etudiant[i].prenom );
            etudiant[i].nom[0] = toupper( etudiant[i].nom[0] ); // mise en majuscule de l initiale du nom
            etudiant[i].prenom[0] = toupper( etudiant[i].prenom[0] ); // mise en majuscule de l initiale du prenom
    
            // Notes
            j = 1;
          //  total = 0;
            while( j <= 3 )
            {
                // On verifie la saisie de la note
                do
                {
                    printf( "Note %d : ", j ); // affiche le rang de la note
                    scanf( "%f", &note );
                    if( note < 0 || note > 20 )
                        {
                        printf( "Une note doit etre comprise entre 0 et 20\n" );
                        }
    
                }
                while( note < 0 || note > 20 );
    
                // On affecte la note a l'eleve
                etudiant[i].notes[j - 1] = note;
                //total = total + note;
                j++;
            }
            // Calcul de la moyenne
    
        }
    }
    
    //  AFFICHAGE DE TOUS LES ETUDIANTS SAISIS
    void Affichage(etudiant[],int NB_E)
    {
        int i, j;
    
        system( "cls" );
        // On vérifie si le tableau est remplie ??
        if( etudiant[0].moy != -1 )
        {
            for( i = 0 ; i < NB_E ; i++ )
            {
                printf( "\n---- Etudiant %d ----\n", i + 1 );
                printf( "Nom : %s\n", toupper( etudiant[i].nom ));
                printf( "Prenom : %s\n", etudiant[i].prenom );
                printf( "Notes : " );
    
                for( j = 0 ; j < 3 ; j++ )
                {
                    printf( "%.2f ", etudiant[i].notes[j] );
                }
                printf( "\nMoyenne : %.2f\n", etudiant[i].moy );
                printf( "---------------------\n" );
            }
        }
        else
            printf( "\nAucun etudiant n a ete insere.\n" );
    
        printf( "\nAppuyez sur touche pour continuer..." );
        getch();
    }
    
    //CALCUL DE LA MOYENNE
    float CalculMoyenne(float listeNote[],int n)
    {
        float moyen;
        int i;
        float s=0.0;
        moyen=0.0;
    
        for( i = 0 ; i < n ; i++ )
        {
            s=s+listeNote[i];
        }
    
        if (n!=0)
        {
            moyen=s/n;
        }
    
    
        return moyen;
    }
    
    //  AFFICHAGE DU DETAIL SUR L'ETUDIANT TROUVE au rang e donc en e-1
    void AffichageEtu(etudiant[],int rang_etud_trouve)
    {
        int j;
        system( "cls" );
        // On affiche le détail de l'étudiant trouve au rang e-1
        printf( "\nLe rang a afficher est : %d\n",rang_etud_trouve-1 );
        printf( "\n---- Etudiant %d ----\n", rang_etud_trouve );
        printf( "Nom : %s\n", toupper( etudiant[rang_etud_trouve-1].nom ));
        printf( "Prenom : %s\n", etudiant[rang_etud_trouve-1].prenom );
        printf( "Notes : " );
        for( j = 0 ; j < 3 ; j++ ) {
            printf( "%.2f ", etudiant[rang_etud_trouve-1].notes[j] );
        }
        printf( "\nMoyenne : %.2f\n", etudiant[rang_etud_trouve-1].moy );
        printf( "---------------------\n" );
        printf( "\nAppuyez sur touche pour continuer..." );
        getch();
    }
    
    
    



    -
    Edité par Lecodeclavie 24 septembre 2018 à 15:07:07

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2018 à 16:15:30

      pourrais tu nous donner le retour du compilateur
      • Partager sur Facebook
      • Partager sur Twitter

      la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

      Mon GitHub

        24 septembre 2018 à 16:17:13

        Hello,

        Lors de l'appel à une fonction, quand tu lui passes un tableau, pas besoin des [ ]. Par exemple ligne 44: init(Etudiant,NB_E);

        Très mauvaise idée les variables globales !

        -
        Edité par edgarjacobs 24 septembre 2018 à 16:19:02

        • 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

        Programme de traitement de notes

        × 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