DanielP
-
23 nov. 2020 à 02:06
yg_be
Messages postés22726Date d'inscriptionlundi 9 juin 2008StatutContributeurDernière intervention26 avril 2024
-
23 nov. 2020 à 10:35
/*
Bonsoir, dans la question 5 du tp3 B
Il faut afficher le nombre de femme et d’homme. L’affichage du nombre de femme fonctionne cependant l’homme ne marche pas et c’est le meme fonction.
De plus, dans la question 6, il faut ajouter la moyenne salaire hebdo des femmes et il m’Affiche :0
Le resultat est ci-dessous incorrecte.
Merci d’avance
Daniel Prudent
Le nombre de femme est 37
Le nombre d'homme est 0
La moyenne sal heb des femme est 0
/
#include <iostream> // pour entrée-sortie cin, cout
#include <iomanip> // pour le formatage
#include <string>
#include <fstream> // pour les fichiers
#include <list>
#include <algorithm>
using namespace std; // librairie standard
class Personne
{
private :
char sexe ;
float heure, taux ;
int numero;
public :
Personne(char sexe, int numero, float heure, float taux)
{
this->sexe = sexe;
this->numero = numero;
this->heure = heure;
this->taux = taux;
// construire une personne
Personne unePers(sexe, numero, heure, taux);
// préparer d'un nouvel élément :
Pointeur tempo = new Element ;
tempo->pers = unePers;
tempo->suivant = NULL ;
if (liste == NULL)
liste = dernier = tempo;
else
{ dernier->suivant = tempo ;
dernier = tempo;
}
}
aLire.close();
}
// afficher le contenu d'une liste
void afficher(Pointeur liste)
{
cout << "Contenu de la liste des personnes :\n";
int n = 0;
while (liste)
{
cout << setw(4) << n++ <<") " << liste->pers ;
liste = liste->suivant;
}
}
void afficher(Pointeur liste, char sexeVoulu)
{
bool trouve = false;
while (liste)
{
if ( liste->pers.getSexe() == sexeVoulu)
{ trouve = true;
cout << "\nCoordonnees de la premiere personne de sexe "
<< sexeVoulu << " : " << endl
<< liste->pers << endl;
break; // quitter la boucle while
}
liste = liste->suivant;
}
if (!trouve)
cout << "Aucune personne de sexe : " << sexeVoulu << endl;
}
void chercher(int aChercher, Pointeur liste, Pointeur & avant, Pointeur & cestLui)
{
avant = NULL; // avant le 1er élément : il n'en a pas => avant vaut NULL
cestLui = liste; // cestLui pointe vers le 1er élément
while (cestLui && cestLui->pers.getNumero() != aChercher)
{
// avant prendre la place de cestLui
avant = cestLui;
cout << cestLui->pers.getNumero() << endl;
cout << avant->pers.getNumero() << endl;
cin >> reponse;
}
if (liste == NULL) cout << "La liste est vide!\n";
}
int nbSexe(Pointeur & liste, char item_to_find) { // fonction pour find femme ou monsieur
int compteur = 0;
//toujours au debut la liste pointe sur le premier element c'est equivalent a i=0 pour un tableau
while(liste) // tant que la liste ne pointe pas vers null
{
if(liste->pers.getSexe() == item_to_find)
{
compteur+= 1;
}
liste=liste->suivant;//equivalent i++ pour un tableau
}
return compteur;
}
while(liste) // tant que la liste ne pointe pas vers null
{
if(liste->pers.getSexe() == sexeVoulu)
{
somme+= liste->pers.getTaux();
}
liste=liste->suivant;//equivalent i++ pour un tableau
}
return somme/nbElem;
}
// for(int i = 0; i < nbElem ; i++)
// if (sexe [i] == sexeVoulu)
// somme += tab[i];
//
// return somme / nbElem ;
// }
int main(){
//1. de lire le fichier, de créer une liste chaînée des employés dans l'ordre FIFO (First In First Out)
int sum = 0; // open the txt file
int x;
ifstream inFile;
Pointeur liste, dernier;
lireRemplir("emp_a20.txt",liste, dernier);
//2. d'afficher le premier et le dernier employé de la liste en surchargeant l'opérateur d'affichage
cout << "Premiere pers : " <<liste->pers;
cout << "Derniere pers : " << dernier->pers;
afficher(liste);
// afficher les coordonnees du 1er homme de la liste
afficher(liste, 'M');
//4. de supprimer le premier, le dernier et l'employé numéro 411
demoRecherche(liste);
demoSupprimer(liste);
afficher(liste);
//5. de compter et d'afficher :
//- le nombre de femmes;
//- le nombre d'hommes
int nbF=nbSexe(liste, 'F');
cout << "Le nombre de femme est " << nbF << endl;
int nbM=nbSexe(liste, 'M');
cout << "Le nombre d'homme est " << nbM << endl;
//6. de calculer le salaire hebdomadaire moyen des femmes
int nbMoy=moyenne(liste, 1, 'F');
cout << "La moyenne sal heb des femme est " << nbMoy << endl;