bonjour a tous je débute en programmation, je suis en première année de bts iris et j'ai un petit programme a rendre mais j'avoue avoir pas mal de dificultées....
le programme est censé receuillir les notes d'un élève via des vecteurs et ensuite de calculer sa moyenne ( sa a l'air tout bete comme sa^^)
jvous donne directement mon code source, sa devrait mieux vous parler.
private :
char vectnom[NOM_ETUDIANT] ; // stock le nom de l'élève (15 caractères)
double vectnotes[NB_NOTES]; //stock jusqu'a 10 notes de l'élève
float moyenne ; // contient la moyene de l'élève (float - précis,rapide.suffisant)
int compteurNotes ; // compte le nombre de note obtenu par l'élève
public :
//---------------------.:Constructeur,Destruceur de la class:.---------------
Etudiant() ; // Constructeur sans parametre
~Etudiant() ;
//-----------------------.:Fonctions lire et écrire nom:.--------------------
Etudiant :: Etudiant(){ // Constructeur sans parametre
vectnom[NOM_ETUDIANT] = 0 ; // Code ascii 0 qui équivaut a un caractére nul
moyenne = -1 ; // Initialisation a -1 de l'attribut moyenne
vectnotes[NB_NOTES] = -1 ; // Initialistion a -1
compteurNotes = 0 ; // Initiatlisation a 0 du compteur
int i ;
for( i = 0; i <= NB_NOTES; i++){ //boucle qui inialise le vecteur notes
vectnotes[i] = vectnotes[NB_NOTES] ;
}
for( i = 0; i <= NOM_ETUDIANT ; i++){ //boucle qui inialise le vecteur nom
vectnom[i] = vectnom[NOM_ETUDIANT] ;
}
}
//----------------------------Destructeur------------------------------------
Etudiant :: ~Etudiant(){
}
//------------------Fonctions Lire et Ecrire vecteurnom----------------------
//--------------------Fonctions Lire et Calculer moyenne---------------------
float Etudiant :: LireMoyenne(void){
return moyenne ;
}
void Etudiant :: CalculerMoyenne(float prmMoyenne) {
moyenne = vectnotes[NB_NOTES] / compteurNotes ;
moyenne = prmMoyenne ;
}
/* Remarque: Risque d'erreur, si j'associe directement a Calculermoyenne une
valeur quelqconque l'attribut va bien etre modifié mais va instantanément
changé pour etre egale au vectnotes[NB_NOTES] / compteurNotes
surtout ke les attributs sont initialisé avec une valeur donc si j'ecrit
la moyenne via l'appel de la fonction avec un objet sans parametre
elle va instantanement changé pour etre divisé par un compteur initialisé
a zero ce qui est problmématique!!*/
/* Remarque : si le vectnotes contient le nb de note recu par léleve pourquoi ne
pas faire la somme de ces valeurs diviser par la taille du vecteur??
et donc se passer du compteur! */
//----------------Fonctions Lire et Ecrire CompteurNotes---------------------
void Etudiant :: EcrirecompteurNotes(int prmCompteurNotes) {
compteurNotes = prmCompteurNotes ;
// la je peu écrire dans le compteur mais il ne calcul rien, comment faire??
}
int Etudiant :: LireNbNotes(void) {
return compteurNotes ;
}
//-------------Fonctions Lire et Ecrire vectnotes[NB_NOTES]------------------
pour faire tester le bon fonctionnement je déclare un objet sans parametre dans une autre fiche avec lequel j'appel les différentes fonctions lire et écrire et vérifie le résulta attendu avec le déboger.
Seulement impossible dan l'état actuel de compter le nb de notes, j'arrive pas a le coder! et puis jpense avoir des erreurs dans ma fonctions CalculerMoyenne magré que le compilateur ne renvoie aucune erreur.
d'ailleurs j'arrive pas non plus a utiliser mes fonctions, le compilateur me renvoie cette erreur : "structure necessaire sur le coté gache.ou*." (mwa pas comprendre) j'ai essayer différentes façon que voila :
Bon, j'ai pas lu jusqu'à la fin mais déjà il me semble que tes 2 boucles for() sont fausses, non ?
for( i = 0; i <= NB_NOTES; i++){ //boucle qui inialise le vecteur notes
vectnotes[i] = vectnotes[NB_NOTES] ;
}
for( i = 0; i <= NOM_ETUDIANT ; i++){ //boucle qui inialise le vecteur nom
vectnom[i] = vectnom[NOM_ETUDIANT] ;
}
Le fait de mettre le égal revient à compter 11 éléments dans le 1er cas (NB_NOTES + 1) et 16 dans le 2ème cas (NOM_ETUDIANT + 1).
Donc forcément ça te retourne une erreur dès que i est égal à chacune de tes constantes.
Je ne sais pas si c'est vraiment ça le problème, mais déjà corrige ça.