else
{for(int i=0;i<nCand;i++)
if(100*_nbVoixDesCandidats[i]/_nbElecteurs) > 12,5/100*_nbElecteurs);
{std::cout<<"Le candidat "<<_nomsDesCandidats[i]<<" est selectionne pour le deuxieme tour";
break;
}
} // comme ça ?
election :: election (int nCand, string*noms) { nbelecteurs=0; nbvotants=0; nbcandidats=nCand; noms[nbCandidats]= /*? je reviendrais là-dessus après*/ }
Election::Election(int nCand, std::string* noms) : _nbElecteurs(0), _nbVotants(0), _nbCandidats(nCand) { _noms[_nbCandidats] = /*? je reviendrais là-dessus après*/ }
noms[nbCandidats]= /* ???? recopier un tableau dans un autre
tableau dynamique pointant vers je sais
pas quoi ça me dépasse...*/
_noms[_nbCandidats] = new nomDesCandidats [noms]; // ? for (int i=o; i<_nbCandidats; i++) ?? trop de tableau de tableau
Ca vous dirait d'intervenir au près de mon prof d'amphi ?
Qu'est ce que "voir 1-" ?
Je ne fais la différence entre noms et _noms ...
#ifndef ELECTION_HH_ # define ELECTION_HH_ class Election { public: Election(int nCand, std::string* noms); virtual ~Election(); void saisieResultat(); void triResultat(); double tauxDeParticipation(); int suffragesExprimes(); double tauxDeBlancs(); void afficheResultatExprimes(); void afficheResultatElecteurs(); virtual void afficheSelectionnes() = 0; protected: int _nbElecteurs; int _nbVotants; int _nbCandidats; std::string* _nomDesCandidats; int* _nbVoixDesCandidats; }; #endif /* !ELECTION_HH_ */
Election::Election(int nCand, std::string* noms) : _nbElecteurs(0), _nbVotants(0), _nbCandidats(nCand) { _noms = new std::string[nCand]; // nCand ou _nbCandidats, c'est pareil for (int i = 0; i < _nbCandidats; ++i) _noms[i] = noms[i]; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionElection::Election(int nCand, std::string* noms) : _nbElecteurs(0), _nbVotants(0), _nbCandidats(nCand) { _noms = new std::string[nCand]; // nCand ou _nbCandidats, c'est pareil for (int i = 0; i < _nbCandidats; ++i) _nomDesCandidats[i] = noms[i]; // Si _noms et en fait _nomDesCandidats }
int _nbVoixDesCandidats=0; _nbVoixDesCandidats = new int[nCand];// pointeur=new type[taille] ? Y'a t'il besoin de faire une boucle pour initialiser tous les éléments du tableau à 0 ?
Election::~Election() { delete [] _nomDesCandidats; delete [] _nbVoixDesCandidats; }A priori ça devrait être ça, on libère juste la mémoire en supprimant les tableaux dynamiques.
Le "_noms" soit disant déclaré dans Election.hh est ou ? C'est l'attribut _nomDesCandidats c'est ça ?
Election::Election(int nCand, std::string* noms) : _nbElecteurs(0), _nbVotants(0), _nbCandidats(nCand) { _nomDesCandidats= new std::string[nCand]; // nCand ou _nbCandidats, c'est pareil for (int i = 0; i < _nbCandidats; ++i) _nomDesCandidats[i] = noms[i]; }
Pour initialiser les éléments du tableau dynamique à 0 comment fait on ?
int _nbVoixDesCandidats=0;
_nbVoixDesCandidats = new int[nCand];// pointeur=new type[taille] ? Y'a t'il besoin de faire une boucle pour initialiser tous les éléments du tableau à 0 ?
A priori ça devrait être ça, on libère juste la mémoire en supprimant les tableaux dynamiques.
if (_nomDesCandidats) // ou if (_nomDesCandidats != 0) delete [] _nomDesCandidats;
_nbVoixDesCandidats = new int[nCand]; for (int i=0;i<nCand;i++) _nbVoixDesCandidats [i]= 0 ?
Pas besoin d'initialiser _nbVoixDesCandidats à 0 avant si c'est pour supprimer après puisqu'on initialise _nbVoixDesCandidats par ce qui est contenu dans _nbCandidats (ou nCand ) ?
int étant un pod on initialise :
_nbVoixDesCandidats = new int[nCand];
for (int i=0;i<nCand;i++)
_nbVoixDesCandidats [i]= 0 ?
Oui mais j'ai un int, et vous avez dis qu'il fallait initialiser dans ce cas la, mais plus dans ce cas présent ? Ou alors c'est moi qui ne comprend pas le terme initialiser ?
Ca veut dire faire une boucle pour initialiser tous les éléments nCand du tableau dynamique _nbVoixDesCandidats ?
int a = 0; // J'initialise a à 0. int b = 5; // J'intialise b à 5.
int c 0; // Pas forcément utile, vu qu'on a: c 5 derrière. c = 5; // Pourrait s'écrire: int c; c = 5;
_nomDesCandidats= new std::string[nCand]; // Initialisation à 0 for (int i = 0; i < _nbCandidats; ++i) _nomDesCandidats[i] = 0; // Copie de noms vers _nomDesCandidats for (int i = 0; i < _nbCandidats; ++i) _nomDesCandidats[i] = noms[i];
_nbVoixDesCandidats = new int[nCand]; for ( int i = 0; i<nCand; i++) _nbVoixDesCandidats [i] = noms [i]; // dites moi que c'est ça
La maintenant on veut faire pointer _nbVoixDesCandidats vers un tableau dynamique d'entier de _nbCandidats
_nbVoixDesCandidats [i] = noms [i]; // dites moi que c'est ça
_nomDesCandidats = new std::string[nCand]; // Création du tableau des noms des candidats. // Copie de noms vers _nomDesCandidats for (int i = 0; i < nCand; ++i) _nomDesCandidats[i] = noms[i]; _nbVoixDesCandidats = new std::string[nCand]; // Création du tableau des voix obtenues par chaque candidat. // Initialisation à 0 de _nbVoixDesCandidats for (int i = 0; i < nCand; ++i) _nbVoixDesCandidats[i] = 0;
_nbVoixDesCandidats = new std::string[nCand];pourquoi std::string[nCand] et pas new int[nCand] ?
_nbVoixDesCandidats = new std::string[nCand];
pourquoi std::string[nCand] et pas new int[nCand] ?
void Election :: saisieResultat { std:: cout<<"nombre d'electeurs inscrits"<<std::endl; // si je ne me trompe pas avec vos notations std:: cin>>_nbElecteurs;
std:: cout<<"nombre de votants"<<std::endl; std:: cin>> _nbVotants;
std:: cout<<"voix que le candidat à obtenu"<<std::endl; std:: cin>>_nbVoixDesCandidats; /* mais vu que c'est un pointeur et par conséquent un tableau j'imagine qu'il faut faire une boucle pour pouvoir remplir le nombre de voix obtenu par chaque candidat ? */ for ( int i=0; i<nCand; i++) _nbVoixDesCandidats[i] = _nomsDesCandidats [i]; // pas très sur de savoir à quoi c'est égal
int k; for ( int i=0; i<nCand; i++) { k=i; for ( int j=i+1; j<nCand; j++) if (_nbVoixDesCandidats[j] = _nbVoixDesCandidats[i]) k=j; if (k!=i) {int z = _nbVoixDesCandidats[i]; _nbVoixDesCandidats[i] = _nbVoixDesCandidats[k]; _nbVoixDesCandidats[k] = z; // mais je ne fais aucun lien avec le tableau _nomDesCandidats }
Trois mois c'est suffisant pour maitriser ces notions abordées ?
Est ce qu'en deux heures de temps c'est possible de traiter intégralement ce sujet de partiel ?
"saisieResultat sans paramètre ne renvoyant rien, cette méthode demandera à l'utilisateur d'entrer le nombre d'electeurs inscrits et stockera ce nombre dans _nbElecteurs"
"elle lui demandera aussi le nombre de votant"
"et pour chaque candidat, le nombre de voix qu'il a obtenu"
"triResultat, sans paramètre ne renvoyant rien. cette méthode trie les tableaux _nomDesCandidats et _nbVoixDesCandidats dans l'ordre décroissant du nombre de voix obtenues par le candidat"
if (_nbVoixDesCandidats[j] = _nbVoixDesCandidats[i])
// mais je ne fais aucun lien avec le tableau _nomDesCandidats
Tu stockeras le résultat, à chaque tour, dans _nbVoixDesCandidats (avec i qui réprésente le candidat en cours).
std:: cout<<"voix que le candidat à obtenu"<<std::endl; for ( int i=0; i<nCand; i++) std:: cin>>_nbVoixDesCandidats[i]; //ça parait évident écrit comme ça;
std:: cout<<"voix que le candidat à obtenu"<<std::endl;
for ( int i=0; i<nCand; i++)
std:: cin>>_nbVoixDesCandidats[i]; //ça parait évident écrit comme ça;
for (int i = 0; i < nCand; ++i) { std::cout << "Voix que le candidat " << _nomDesCandidats[i] << " a obtenu: "; std::cin >> _nbVoixDesCandidats[i]; }