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", ¬e );
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
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
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.
la connaissance est une chose qui ne nous appauvrit pas quand on la partage.
Mon GitHub
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent