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.
voila mon .h :
#ifndef UntClassEtudiantH
#define UntClassEtudiantH
#define NB_NOTES 10
#define NOM_ETUDIANT 15
#include <vcl.h>
//---------------------------------------------------------------------------
class Etudiant {
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:.--------------------
void EcrireNom(char prmNom) ;
char LireNom(void) ;
//----------------------.:Fonctions Lire et Ecrire moyenne:.-----------------
void CalculerMoyenne(float prmMoyenne) ;
float LireMoyenne(void) ;
//---------------.:Fonctions Lire et Ecrirevectnotes[NB_NOTES]:.-------------
void EcrireVectnotes(double prmVectnotes) ;
double LireVectnotes(void) ;
//-------------------.:Fonctions Lire et Ecrire CompteurNotes:.---------------
void EcrirecompteurNotes(int prmCompteurNotes) ;
int LireNbNotes(void) ;
} ;
#endif
--------------------------------------------------------------------------------------
et voila mon .cpp
#pragma hdrstop
#include "UntClassEtudiant.h"
#include <vcl.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
//----------------------------Constructeur-----------------------------------
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----------------------
char Etudiant :: LireNom(void){
return vectnom[NOM_ETUDIANT] ;
}
void Etudiant :: EcrireNom(char prmNom){
vectnom[NOM_ETUDIANT] = prmNom ;
}
//--------------------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]------------------
void Etudiant :: EcrireVectnotes(double prmVectnotes) {
vectnotes[NB_NOTES] = prmVectnotes ;
}
double Etudiant :: LireVectnotes(void) {
return 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 :
float resultat ;
resultat = objEtudiant.CalculerMoyenne(20) ;
EdtSaisieNotes->Text = objEtudiant.EcrireNom("tartempion") ;
Merci a celui qui aura le courage de lire ce pavé et de m'aider!!!
(jspr avoir été assez clair)