Code qui gère des ouvriers.

a marqué ce sujet comme résolu.

Bonjour à tous, comment allez-vous ?

Voici un petit code que j’ai fais à la suite de ce que j’ai appris sur zeste. cependant le code ne fait pas tout ce que je veux il ne traite pas correctement le cas numéro je ne comprend pas pq erase se comporte comme ça du coup.

Je sais que certaines personne vont me dire de faire des exercices plus facile mais c’est en codant et en faisant des exercices qu’on apprend c’est comme ça que je procède pour ce qui est des exercices plus facile j’en ait déjà fais quelques un mais pas tous… je suis à la section des itérateurs actuellement mais j’ai voulu avant d’avancer plus loin d’essayer de coder ce petit programme perso…

Si quelqu’un peux me dire pourquoi le cas numéro 2 ne fonctionne pas ne me fait pas correctement le Erase alors que veux qu’il supprime uniquement le prenom et la il me supprime le premon et le nom dans mon choix numéro 1 et numéro 2 alors que je veux qu’il supprime uniquement le prénom ou le nom selon le choix que je fais.

je vous remercie d’avance d’essayé de m’aider à trouver mon erreur , bonne soirée à vous et à bientôt.

voici le code :

#include <iostream>
#include <vector>
#include <string>

void donne_ouvrier();
void efface_ouvrier();

int main()
{
  //Déclaration des Variables et des tableaux.
  int choix{0};
 
  //Creation du menu d'acceuil.
  std::cout <<"********** Menu ********** "<<std::endl;
  std::cout <<"1. Nouveau ouvrier. "<<std::endl;
  std::cout <<"2. Suppression d'ouvrier " <<std::endl;
  std::cout <<std::endl;
  std::cout <<"Veuillez faire un choix 1 a 2 : ";
  std::cin >> choix;


  switch (choix)
  {
    case 1:
      donne_ouvrier();
      
  break;
  //Quand j'ajoute le case 2: il ne l'accepte pas.... 
  case 2:
      efface_ouvrier();
  break;
 }
}



void donne_ouvrier()
{
  int nombre_ouvrier{0}, salaire{0},horraire{0};
  int TotalHorraire{0},CouTotal{0},i{1};

  std::string Prenom;
  std::string Nom;
  std::string type;
  std::string Jour;

  std::vector<std::string> prenom {};
  std::vector<std::string> nom {};
  std::vector<std::string> type_travail{};
  std::vector<std::string> jour_travail{};

  std::vector <int> horraire_travail{};
  std::vector <int> salaire_ouvrier{};

  std::cout <<"Combien d'ouvriers voulez vous entrer ? ";
  std::cin >> nombre_ouvrier;

      while (nombre_ouvrier > 0)
      {
       //Demande le prenom de l'ouvrier numéro x et insère le dans le vector prenom.
        std::cout <<"Entrez le prenom de l'ouvrier numero " << i <<"  : ";
        std::cin >> Prenom;
        prenom.push_back(Prenom);
       //Demande le nom de l'ouvrier numéro x et insère le dans le vector nom.
        std::cout <<"Entrez le nom de l'ouvrier numero " << i << " : ";
        std::cin >> Nom;
        nom.push_back(Nom);
      //Demande le type de travail de l'ouvrier numéro x et insèrle dans le tableau type_travail.
        std::cout <<"Veuillez entrer le type de boulot pour l'ouvrier numero : " << i <<" : ";
        std::cin >> type;
        type_travail.push_back(type);
      //Demande le jour de travail de l'ouvrier numéro x et insère le dans le tableau jour_travail.
        std::cout <<"Veuillez indiquer le jour de travail de l'ouvrier numero " << i << " : ";
        std::cin >> Jour;
        jour_travail.push_back(Jour);
      //Demande l'horraire de travail de l'ouvrier numero x et insère le dans le tableau horraire_travail.
        std::cout <<"Veuillez indiquer l'heure de travail de l'ouvrier numero " << i <<" : ";
        std::cin >> horraire;
        horraire_travail.push_back(horraire);
      //Demande la salaire de l'ouvrier numéro x et insère le dans le tableau salaire_ouvrier.
        std::cout <<"Veuilles indiquer le salaire de l'ouvrier : " << i << " : ";
        std::cin >> salaire;
        salaire_ouvrier.push_back(salaire);
        
        i++;
        nombre_ouvrier--; 
  }
  //affiche le tableau et les données entrée dans le tableau.
  std::cout<<std::endl;
  std::cout <<"***Prenom & nom***"<<std::endl;
  //ça foire ici ...
  
  for (auto elements : prenom)
  {
    std::cout <<"   "<< elements;
    for (auto elements : nom)
    {
      std::cout <<" "<< elements<<std::endl;
    }
  }
  std::cout <<"\t\t   ***Type de travail*** "<<std::endl;
  for (auto TypeT : type_travail)
  {
    std::cout <<"\t\t\t" << TypeT <<std::endl;
  } 
  std::cout <<"\t\t\t\t\t  ***Jour travail***"<<std::endl;
  for (auto JourT : jour_travail)
  {
    std::cout <<"\t\t\t\t\t\t"<<JourT <<std::endl;
  }
  std::cout <<"\t\t\t\t\t\t\t    ***Horraire***"<<std::endl;
  for (auto HorraireT : horraire_travail)
  {
    std::cout <<"\t\t\t\t\t\t\t\t  "<< HorraireT <<std::endl;
    TotalHorraire += HorraireT;
  }
  std::cout <<"\t\t\t\t\t\t\t\t\t    ***Salaire***"<<std::endl;
  for (auto SalaireOuv : salaire_ouvrier)
  {
    std::cout <<"\t\t\t\t\t\t\t\t\t\t" << SalaireOuv <<std::endl;
    CouTotal += SalaireOuv;
  }
  
  //Comptabilité des horraires de tout les ouvriers.
  std::cout <<"La totalite des horraires ouvrier est de : ";
  std::cout <<TotalHorraire<<"h" <<std::endl;
  std::cout <<"Le coup total des ouvriers est de : ";
  std::cout <<CouTotal<<" Euros"<<std::endl;
}

void efface_ouvrier()
{


  int nombre_ouvrier{0}, salaire{0},horraire{0};
  int TotalHorraire{0},CouTotal{0},i{1};
  int choix{0};

  std::string Prenom;
  std::string Nom;
  std::string type;
  std::string Jour;

  std::vector<std::string> prenom {};
  std::vector<std::string> nom {};
  std::vector<std::string> type_travail{};
  std::vector<std::string> jour_travail{};

  std::vector <int> horraire_travail{};
  std::vector <int> salaire_ouvrier{};

  std::cout <<"Combien d'ouvriers voulez vous entrer ? ";
  std::cin >> nombre_ouvrier;

     while (nombre_ouvrier > 0)
      {
       //Demande le prenom de l'ouvrier numéro x et insère le dans le vector prenom.
        std::cout <<"Entrez le prenom de l'ouvrier numero " << i <<"  : ";
        std::cin >> Prenom;
        prenom.push_back(Prenom);
       //Demande le nom de l'ouvrier numéro x et insère le dans le vector nom.
        std::cout <<"Entrez le nom de l'ouvrier numero " << i << " : ";
        std::cin >> Nom;
        nom.push_back(Nom);
      //Demande le type de travail de l'ouvrier numéro x et insèrle dans le tableau type_travail.
        std::cout <<"Veuillez entrer le type de boulot pour l'ouvrier numero : " << i <<" : ";
        std::cin >> type;
        type_travail.push_back(type);
      //Demande le jour de travail de l'ouvrier numéro x et insère le dans le tableau jour_travail.
        std::cout <<"Veuillez indiquer le jour de travail de l'ouvrier numero " << i << " : ";
        std::cin >> Jour;
        jour_travail.push_back(Jour);
      //Demande l'horraire de travail de l'ouvrier numero x et insère le dans le tableau horraire_travail.
        std::cout <<"Veuillez indiquer l'heure de travail de l'ouvrier numero " << i <<" : ";
        std::cin >> horraire;
        horraire_travail.push_back(horraire);
      //Demande la salaire de l'ouvrier numéro x et insère le dans le tableau salaire_ouvrier.
        std::cout <<"Veuilles indiquer le salaire de l'ouvrier : " << i << " : ";
        std::cin >> salaire;
        salaire_ouvrier.push_back(salaire);
        i++;
        nombre_ouvrier--; 
      }
        
  //affiche le tableau et les données entrée dans le tableau.
  std::cout<<std::endl;
  std::cout <<"Combien d'ouvrier voulez vous supprimer ?";
  std::cin >> choix;

  if (choix == 1)
  {
    std::cout <<"***Prenom & nom***"<<std::endl;
    prenom.erase(std::begin(prenom),std::end(prenom));
    for (auto elements : prenom)
    {
      std::cout << elements;
    }
  }

  else if (choix == 2)
  {
    std::cout <<"***Prenom & nom***"<<std::endl;
    nom.erase(std::begin(nom),std::end(nom));
    
    for (auto elements : nom)
    {
      std::cout << elements<<std::endl;
    }
  }

  
  //ça foire ici ...
   
  std::cout <<"\t\t   ***Type de travail*** "<<std::endl;
  for (auto TypeT : type_travail)
  {
    std::cout <<"\t\t\t" << TypeT <<std::endl;
  } 
  std::cout <<"\t\t\t\t\t  ***Jour travail***"<<std::endl;
  for (auto JourT : jour_travail)
  {
    std::cout <<"\t\t\t\t\t\t"<<JourT <<std::endl;
  }
  std::cout <<"\t\t\t\t\t\t\t    ***Horraire***"<<std::endl;
  for (auto HorraireT : horraire_travail)
  {
    std::cout <<"\t\t\t\t\t\t\t\t  "<< HorraireT <<std::endl;
    TotalHorraire += HorraireT;
  }
  std::cout <<"\t\t\t\t\t\t\t\t\t    ***Salaire***"<<std::endl;
  for (auto SalaireOuv : salaire_ouvrier)
  {
    std::cout <<"\t\t\t\t\t\t\t\t\t\t" << SalaireOuv <<std::endl;
    CouTotal += SalaireOuv;
  }
  
  //Comptabilité des horraires de tout les ouvriers.
  std::cout <<"La totalite des horraires ouvrier est de : ";
  std::cout <<TotalHorraire<<"h" <<std::endl;
  std::cout <<"Le coup total des ouvriers est de : ";
  std::cout <<CouTotal<<" Euros"<<std::endl;
}

+0 -0

Salut,

Quel est le sens de ton exercice et qu’est-ce que tu cherches à faire ?

Pourquoi la fonction efface_ouvrier duplique en grande partie donne_ouvrier ?

Tes variables sont pour la plupart mal nommées (notamment les conteneurs et les itérateurs) ce qui fait qu’il est assez difficile de s’y retrouver. Dans la fonction donne_ouvrier tu as des boucles imbriquées pour l’affichage des prénoms et noms, c’est assez étrange.

Et dans efface_ouvrier je ne comprends pas du tout ce que tu tentes de faire, pourquoi dans un cas ne toucher qu’à la liste des prénoms et dans l’autre aux noms ? Pourquoi cherches-tu à vider complètement tes conteneurs avec erase ?

Salut,

Quel est le sens de ton exercice et qu’est-ce que tu cherches à faire ? Je veux pouvoir créer un programme qui entre un nombre d’ouvriers avec leurs prénom et non ainsi que le type, le jour, l’horaire , le salaire, et je veux afficher la somme total des ouvriers et l’heure total des ouvriers ensuite je veux pouvoir effacer un prénom ou un nom selon le choix que fais donc par exemple si j’entre ceci :

Bonsoir :-)

je veux qu’il affiche le nombre total horaire et salaire donc ici 40 pour l’horaire et 2700 pour le salaire ça c’est pour la cas 1 pour le cas 2 je veux qu’il efface le prenom 1 et ou le nom 1 puis le prénom 2 et/ou le nom 2. pour le moment je veux juste faire ça je ne sais pas si je suis assez clair.

Prenom 1 : Jean
Nom 1    : Ruidy
Type 1   : Informatique
Jour 1   : Lundi
Horaire 1: 20
Salaire 1: 1500

Prenom 2  : Patrick
Nom 2     : Riter
Type 2    : Peintre
Jour 2    : Mardi
Horaire 2 : 20
Salaire 2 : 1200


Pourquoi la fonction efface_ouvrier duplique en grande partie donne_ouvrier ? Je ne sais pas c’est ce que j’ai réussi à faire pour pouvoir utilise mon choix numéro 2 je ne sais pas comment faire pour repéter le cas numéro 1 pour l’utilisé dans le cas numéro 2 ….. j’ai donc dupliqué car je n’ai pas trouver d’autre façon de faire même si je trouve cela pas cool du tout.

Tes variables sont pour la plupart mal nommées (notamment les conteneurs et les itérateurs) ce qui fait qu’il est assez difficile de s’y retrouver. Dans la fonction donne_ouvrier tu as des boucles imbriquées pour l’affichage des prénoms et noms, c’est assez étrange.

Oui car je ne sais pas comment faire pour pouvoir donné nom et prénom j’avais essayé sans les imbriqué mais cela ne faisais pas ce que je voulais… donc du coup j’ai imbriqué

Et dans efface_ouvrier je ne comprends pas du tout ce que tu tentes de faire, pourquoi dans un cas ne toucher qu’à la liste des prénoms et dans l’autre aux noms ? Pourquoi cherches-tu à vider complètement tes conteneurs avec erase ?

Je ne voulais pas faire ca mais juste effacé soit le 1er prénom soit le premier nom pour modification plus tard si je me suis tromper par exemple. mais la fonction erase ne fait pas ce que je veux malheureusement..

Source:entwanne

+0 -0

@gasche Ce n’est pas l’endroit idéal pour avoir un débat sur la question. Si tu désires ouvrir un sujet sur la gestion des travailleurs, libre à toi de créer un sujet là-dessus. Mais poster un message hors sujet ici, au surplus en répondant "Si tu veux apprendre l’informatique en organisant le travail d’ouvriers pour calculer leur coût, c’est évidemment ton choix et tu es libre, mais j’aime mieux dépenser mon temps ailleurs" est particulièrement déplacé et irrespectueux envers l’auteur du sujet.

Nous sommes ici par un désir d’apprentissage et d’entraide, pas pour porter un jugement sur un autre membre, et ses éventuelles convictions sociales, sur la base d’un simple exercice.

Merci de ne pas faire dévier le sujet (auquel tu as, d’ailleurs, le choix de ne pas intervenir).

+2 -0

Salut,

En fait, si tu continue le cours, tu auras tes solutions. Le problème, tu l’as déjà identifié au début de ton message, c’est que tu t’attaques à quelque chose de trop compliqué, tu n’as pas encore les outils pour. Tu essaies d’utiliser des fonctions sans avoir lu le chapitre qui les traite.
Ton choix n’est pas respecté parce que c’est une variable locale à la fonction, elle n’a rien à voir avec la variable "choix" dans laquelle tu as récupéré l’entrée de l’utilisateur.

Par ailleurs, ce que tu cherches à réaliser est un programme de base de donnée (si tu cherches une vraie solution d’ailleurs, tourne-toi vers un SGBD, mais si c’est pour la pédagogie, très bien). Or, vu que tout le but d’une base de donnée, c’est de structurer les données, il va te falloir des outils qui le permettent… et ça tombe bien ! il y a des chapitres sur les structures de données, voire la POO plus loin dans le cours !

En bref, tu le savais déjà et tu as décidé de l’ignorer, mais tu ne fais vraiment pas quelque chose d’adapté à ta progression dans le cours.

EDIT : Je n’avais pas vu que tu refaisais un choix à l’intérieur de la fonction, désolé. La remarque est toujours valable que tu ne sais pas utiliser des fonctions (et c’est normal car tu n’as pas lu le cours dessus) puisque tu duplique énormément de code et ne donne aucun arguments qui te serait pourtant utile. Pour le erase, il suffit d’aller voir sa doc et tu verras que tu es en train de supprimer du début (begin) à la fin (end), donc tout le contenu, pas seulement le premier élément.

+1 -0

Salut,

En fait, si tu continue le cours, tu auras tes solutions. Le problème, tu l’as déjà identifié au début de ton message, c’est que tu t’attaques à quelque chose de trop compliqué, tu n’as pas encore les outils pour. Tu essaies d’utiliser des fonctions sans avoir lu le chapitre qui les traite.
Ton choix n’est pas respecté parce que c’est une variable locale à la fonction, elle n’a rien à voir avec la variable "choix" dans laquelle tu as récupéré l’entrée de l’utilisateur.

Bonjour.

Excuse moi mais toutes les fonction que j’utilise dans ce code je l’ai ais vue ….

Par ailleurs, ce que tu cherches à réaliser est un programme de base de donnée (si tu cherches une vraie solution d’ailleurs, tourne-toi vers un SGBD, mais si c’est pour la pédagogie, très bien). Or, vu que tout le but d’une base de donnée, c’est de structurer les données, il va te falloir des outils qui le permettent… et ça tombe bien ! il y a des chapitres sur les structures de données, voire la POO plus loin dans le cours !

Avant de faire de la base de donnée je veux déjà apprendre à maîtriser c++ ….

En bref, tu le savais déjà et tu as décidé de l’ignorer, mais tu ne fais vraiment pas quelque chose d’adapté à ta progression dans le cours.

Oui je le savais c’est c’est comme ça que moi je progresse en tous cas…. Source:romantik

+0 -0

Tu es rapide ^^ désolé j’ai édité mon message précédent

Excuse moi mais toutes les fonction que j’utilise dans ce code je l’ai ais vue ….

Aigle-Royal

Je dis que tu n’as pas vu les fonctions car tu dis en être aux itérateurs, qui est le chapitre juste avant. Et puis comme dit dans mon edit, tu dupliques beaucoup de code et n’utilise ni les arguments d’entrées, ni la valeur de retour, qui te seraient utile pour ce que tu fais.

Avant de faire de la base de donnée je veux déjà apprendre à maîtriser c++ ….

Aigle-Royal

Les structures de données et la POO sont aussi du C++, c’est plus loin dans le cours.

Oui je le savais c’est c’est comme ça que moi je progresse en tous cas….

Aigle-Royal

C’est une méthode, mais tu vas avoir besoin de beaucoup d’aide, puisque le cours n’est pas conçu comme ça. Et tu vas t’apercevoir au fur et à mesure que ce que tu écris précédemment est bon à jeter et à réécrire puisque tu n’avais pas les bons outils, tu les as appris ensuite.

+0 -0

Tu galères, parce que tu n’es pas précis. Tu dis que tu veux effacer un ouvrier. Ca veut dire quoi ? Sans parler de la maladresse 'sociale’, ça veut dire quoi, informatiquement.

Tu pars d’une base de données, avec un fichier ouvrier, avec par exemple 20 enregistrements (dans un fichier, on parle systématiquement de nombre d’enregistrements, ou nombre de lignes). A la fin du traitement, tu auras quoi, tu veux avoir quoi ? Soit tu veux avoir 19 enregistrements, soit tu veux avoir toujours 20 enregistrements, mais tu veux que l’un des enregistrements (un enregistrement précis) ait été modifié. Donc tu veux supprimer un enregistrement, ou modifier un enregistrement.

Informatiquement, ces 2 notions 'supprimer un enregistrement' ou 'modifier un enregistrement' sont très claires ; par contre, effacer un enregistrement, c’est ambigu, c’est une formulation trop floue, donc à ne pas utiliser quand on définit un besoin.

Si tu supprimes un enregistrement, tu le supprimes complètement. Si tu modifies un enregistrement, tu peux modifier uniquement le nom, ou uniquement le prénom, ou uniquement l’adresse. Modifier un enregistrement, pour modifier l’adresse, ça a un sens (déménagement). Modifier un enregistrement pour remplacer un prénom par une chaine vide, soit, pourquoi pas, mais c’est assez bizarre.

Dans ton tout premier essai, en ligne 16 du programme, tu parles de 'suppression’. Suppression, c’est très clair, ça veut dire que si on a n enregistrements au début, on en a n-1 après la suppression. On parle de supprimer l’enregistrement tout entier, on ne parle pas de modification de tel ou tel champ (prénom ou nom).

Ensuite, quand l’objectif est clairement défini (= quand le cahier des charges est clair), il y aura la 2ème étape, celle de la programmation.

Ligne 187, ton programme affiche "Combien d’ouvrier voulez vous supprimer ?" Et l’utilisateur doit répondre 1 ou 2. S’il répond 2, ça veut dire que le programme doit effacer le nom d’un des ouvriers, et s’il répond 1, ça veut dire que le programme doit effacer le prénom.

Tu relis ce que tu fais ? La programmation, ça demande de la rigueur et de la précision.

Enfin, faisons les choses dans l’ordre. Effacer un enregistrement fictif, c’est un concept assez bizarre.

Bon après quelques informations reçu , j’ai rectifié un peu le code et l’ais simplifié je n’avais pas compris que mes variables local empêchais certaines manipulation et que je devais déclarer en global j’ai donc déclarer en global les variables et je suis arrivé à ce code mais il y à encore un petit soucis avec ce code au moment ou je supprime le prénom, quand je supprime le prénom il me supprime le nom avec ce que je ne veux pas bien entendu, par contre maintenant quand je lui dis de supprime le nom tout seule il le supprime ce que je veux justement. et il foire aussi dans l’affichage des prénoms et nom quand je mets plusieurs ouvriers…

Voici le code :

#include <iostream>
#include <vector>
#include <string>

  int nombre_ouvrier{0}, salaire{0},horraire{0};
  int TotalHorraire{0},CouTotal{0},i{1};

  std::string Prenom;
  std::string Nom;
  std::string type;
  std::string Jour;

  std::vector<std::string> prenom {};
  std::vector<std::string> nom {};
  std::vector<std::string> type_travail{};
  std::vector<std::string> jour_travail{};

  std::vector <int> horraire_travail{};
  std::vector <int> salaire_ouvrier{};

  void nouveau_ouvrier();
  void efface_ouvrier();
  void affiche_Ouvrier();

int main()
{
  //Déclaration des Variables et des tableaux.
  int choix{0};
 
  //Creation du menu d'acceuil.
  std::cout <<"********** Menu ********** "<<std::endl;
  std::cout <<"1. Nouveau ouvrier. "<<std::endl;
  std::cout <<"2. Suppression d'ouvrier " <<std::endl;
  std::cout <<std::endl;
  std::cout <<"Veuillez faire un choix 1 a 2 : ";
  std::cin >> choix;


  switch (choix)
  {
    case 1:
      nouveau_ouvrier();   
  break;
    case 2:
  //Quand j'ajoute le case 2: il ne ce comporte comme je voudrais
      efface_ouvrier();  
  break;
 }
  
    affiche_Ouvrier();

 //Comptabilité des horraires de tout les ouvriers.
  std::cout <<"La totalite des horraires ouvrier est de : ";
  std::cout <<TotalHorraire<<"h" <<std::endl;
  std::cout <<"Le coup total des ouvriers est de : ";
  std::cout <<CouTotal<<" Euros"<<std::endl;
 return 0;
}



void nouveau_ouvrier()
{
  

  std::cout <<"Combien d'ouvriers voulez vous entrer ? ";
  std::cin >> nombre_ouvrier;

      while (nombre_ouvrier > 0)
      {
       //Demande le prenom de l'ouvrier numéro x et insère le dans le vector prenom.
        std::cout <<"Entrez le prenom de l'ouvrier numero " << i <<"  : ";
        std::cin >> Prenom;
        prenom.push_back(Prenom);
       //Demande le nom de l'ouvrier numéro x et insère le dans le vector nom.
        std::cout <<"Entrez le nom de l'ouvrier numero " << i << " : ";
        std::cin >> Nom;
        nom.push_back(Nom);
      //Demande le type de travail de l'ouvrier numéro x et insèrle dans le tableau type_travail.
        std::cout <<"Veuillez entrer le type de boulot pour l'ouvrier numero : " << i <<" : ";
        std::cin >> type;
        type_travail.push_back(type);
      //Demande le jour de travail de l'ouvrier numéro x et insère le dans le tableau jour_travail.
        std::cout <<"Veuillez indiquer le jour de travail de l'ouvrier numero " << i << " : ";
        std::cin >> Jour;
        jour_travail.push_back(Jour);
      //Demande l'horraire de travail de l'ouvrier numero x et insère le dans le tableau horraire_travail.
        std::cout <<"Veuillez indiquer l'heure de travail de l'ouvrier numero " << i <<" : ";
        std::cin >> horraire;
        horraire_travail.push_back(horraire);
      //Demande la salaire de l'ouvrier numéro x et insère le dans le tableau salaire_ouvrier.
        std::cout <<"Veuilles indiquer le salaire de l'ouvrier : " << i << " : ";
        std::cin >> salaire;
        salaire_ouvrier.push_back(salaire);
        
        i++;
        nombre_ouvrier--; 
  }

}

void efface_ouvrier()
{
  int choix{0};
     
  nouveau_ouvrier();
        
  //Demande la suppresion du nom ou prénom de l'ouvrier
  std::cout<<std::endl;
  std::cout <<"Que voulez vous supprimer le prenom ou le nom de l'ouvrier ? 1 ou 2 pour le choix : ";
  std::cin >> choix;

  //ça foire ici ...
  if (choix == 1)
  {
    std::cout <<"***Prenom & nom***"<<std::endl;
    prenom.erase(std::begin(prenom),std::end(prenom));
    for (auto elements : prenom)
    {
      std::cout << elements;
    }
  }

  else if (choix == 2)
  {
    std::cout <<"***Prenom & nom***"<<std::endl;
    nom.erase(std::begin(nom),std::end(nom));
    
    for (auto elements : nom)
    {
      std::cout << elements<<std::endl;
    }
  }
  
 
  
}

void affiche_Ouvrier()
{
  std::cout<<std::endl;
  
  std::cout <<"***Prenom & nom***"<<std::endl;
  //ça foire ici ...
  for (auto elements : prenom)
  {
    std::cout <<"   "<< elements;
    for (auto elements : nom)
    {
      std::cout <<" "<< elements<<std::endl;
    }
  }
  std::cout <<"\t\t   ***Type de travail*** "<<std::endl;
  for (auto TypeT : type_travail)
  {
    std::cout <<"\t\t\t" << TypeT <<std::endl;
  } 
  std::cout <<"\t\t\t\t\t  ***Jour travail***"<<std::endl;
  for (auto JourT : jour_travail)
  {
    std::cout <<"\t\t\t\t\t\t"<<JourT <<std::endl;
  }
  std::cout <<"\t\t\t\t\t\t\t    ***Horraire***"<<std::endl;
  for (auto HorraireT : horraire_travail)
  {
    std::cout <<"\t\t\t\t\t\t\t\t  "<< HorraireT <<std::endl;
    TotalHorraire += HorraireT;
  }
  std::cout <<"\t\t\t\t\t\t\t\t\t    ***Salaire***"<<std::endl;
  for (auto SalaireOuv : salaire_ouvrier)
  {
    std::cout <<"\t\t\t\t\t\t\t\t\t\t" << SalaireOuv <<std::endl;
    CouTotal += SalaireOuv;
  }
  
}
+0 -0

Les variables globales sont justifiées dans très peu de cas, c’est généralement une mauvaise pratique. Disons même pour faire simple qu’il ne faut jamais les utiliser (et tu découvriras des exceptions avec l’expérience, peut-être, avec un peu de malchance).
Mais bon, toujours pareil, puisque tu ne veux pas lire la suite du cours et que tu ne connais pas les vraies méthodes pour gérer ça, tu te retrouves à les utiliser.
Cependant, même en partant sur cette architecture, tu n’as pas correctement fait le tri entre ce qui "devrait" être global et ce qui est local (ex : Qu’est-ce que fait cette variable i en global alors qu’elle n’est utilisée que dans nouveau_ouvrier ?)

Est-ce normal que la fonction efface_ouvrier appelle nouveau_ouvrier ?

Ta fonction affiche_ouvrier adopte un format très étrange, je suppose que ce n’est pas du tout comment tu voulais l’afficher. Puisque tu n’as pas de notion de structure de données, tu te retrouves avec des tableaux de chacun des composants de l’ouvrier. Du coup tu n’arrives pas à les associer entre eux. Il y a bien une donnée qui pourrait te permettre de les associer : c’est l’index. En supposant (et en t’assurant) que les données d’un ouvrier sont insérer au même index dans chaque tableau (et donc que tout les tableaux évolue en même temps, attention à efface_ouvrier) alors tu pourras faire des boucle

for(int i = 0; i < nom.size(); ++i)
{
  prenom[i];
  nom[i];
  salaire[i];
  // etc...
}

pour pouvoir afficher toutes les données d’un même ouvrier. Par contre, je me répète, sur ce point aussi, c’est pas une bonne façon de faire en C++, tu n’as pas encore les connaissances pour bien faire.

+0 -0
std::vector<std::string> prenom {};
std::vector<std::string> nom {};

Avec ces 2 lignes, tu crées un tableau avec des prénoms, et un autre tableau totalement indépendant, avec des noms.

Par exemple, tu vas avoir dans le tableau des prénoms : Victor, Salvador, Jules, Henri, George, Zinédine

Et dans le tableau des noms : Hugo, Dali, Ferry, Poincaré, Sand, Zidane.

Bonne nouvelle, le 4ème prénom et le 4ème nom s’associent bien, et ça donne Henri Poincaré.

Puis à un moment, tu vas supprimer par exemple le prénom Victor.

Et du coup, quand tu vas regarder le 4ème prénom et le 4ème nom, tu auras George Poincaré, puis Zinédine Sand, et dommage pour lui, Zidane n’aura plus de prénom.

Je ne sais pas quel était l’objectif visé, mais probablement pas celui-ci.

Les variables globales sont justifiées dans très peu de cas, c’est généralement une mauvaise pratique. Disons même pour faire simple qu’il ne faut jamais les utiliser (et tu découvriras des exceptions avec l’expérience, peut-être, avec un peu de malchance).
Mais bon, toujours pareil, puisque tu ne veux pas lire la suite du cours et que tu ne connais pas les vraies méthodes pour gérer ça, tu te retrouves à les utiliser.
Cependant, même en partant sur cette architecture, tu n’as pas correctement fait le tri entre ce qui "devrait" être global et ce qui est local (ex : Qu’est-ce que fait cette variable i en global alors qu’elle n’est utilisée que dans nouveau_ouvrier ?)

Est-ce normal que la fonction efface_ouvrier appelle nouveau_ouvrier ?

Ta fonction affiche_ouvrier adopte un format très étrange, je suppose que ce n’est pas du tout comment tu voulais l’afficher. Puisque tu n’as pas de notion de structure de données, tu te retrouves avec des tableaux de chacun des composants de l’ouvrier. Du coup tu n’arrives pas à les associer entre eux. Il y a bien une donnée qui pourrait te permettre de les associer : c’est l’index. En supposant (et en t’assurant) que les données d’un ouvrier sont insérer au même index dans chaque tableau (et donc que tout les tableaux évolue en même temps, attention à efface_ouvrier) alors tu pourras faire des boucle

for(int i = 0; i < nom.size(); ++i)
{
  prenom[i];
  nom[i];
  salaire[i];
  // etc...
}

pour pouvoir afficher toutes les données d’un même ouvrier. Par contre, je me répète, sur ce point aussi, c’est pas une bonne façon de faire en C++, tu n’as pas encore les connaissances pour bien faire.

romantik

Bonsoir, Ce n’est pas que je ne veux pas avancé dans le cours c’est juste que j’essaye de mémoriser ce que j’ai appris jusqu’a maintenant pour ne pas trop en magasiner d’informations d’un coup mais je vais bien sûr continuer si en plus tu me dis que la suite du cours me permettrais de résoudre mon soucis.

Pour ce qui est des variable global oui j’ai juste mis toute les déclarations pour les rendre global mais j’ai pas regarder au autres variables j’ai été un peu vite pour modifier les choses… Pour ce qui est de la méthode efface_ouvrier oui je penses que c’est normal vu que je veux effacé les donnée entrée précédemment mais qui ne sont pas enregistrer quand je sélection l’option supprimer mais juste dans l’option nouveau ouvrier donc pour pouvoir avoir les même compte rendu je l’ai répéter j’aurais aimer faire autrement mais je n’ai pas trouver mais je cherche encore …. Pour ce qui est de la fonction affiche_ouvrier je veux utilisé des vecteurs pour réussir ce que je souhaite mais comme la mentionné elegance je n’ai pas le résultat que je veux donc je dois revoir tout cela aussi… merci à vous deux, je vais revoir mon code et essayer de faire mieux mais comme tu dis je vais aussi continuer d’avancé dans le cours….

la pour le moment je suis au exercices des algorythmes après les itérateurs mais avant de faire c’est exercices j’avais décidé de faire ce code pour récapituler tout ce que j’avais appris jusqu’a maintenant et voir si j’avais bien compris la logique du code car j’avais et j’ais tjr des difficulté pour faire des exercices mettre en code mes idées. (bon normal je suis débutant) mais bon j’essaye quand même de m’améliorer en faisant des petits exercices que j’imagine ….

Sur ce passé une bonne soirée et encore merci pour votre aide, j’espère revenir avec mon code terminé …

+0 -0

Pour l’instant,, tu sais manipuler un tableau avec tous les prénoms. Enfin, plus ou moins. Ensuite, tu veux manipuler un tableau avec des individus (Un individu, c’est un nom+prénom+adresse+date de naissance + salaire … et tu voudrais manipuler tout ça d’un coup (ajouter un individu, supprimer un individu, modifier un individu).

C’est un concept différent des tableaux de chaines. Pour l’instant, tu n’es pas outillé pour ça. Laisse tomber, et tu arriveras à un moment au tutoriel adapté pour ça.

Pour l’instant,, tu sais manipuler un tableau avec tous les prénoms. Enfin, plus ou moins. Ensuite, tu veux manipuler un tableau avec des individus (Un individu, c’est un nom+prénom+adresse+date de naissance + salaire … et tu voudrais manipuler tout ça d’un coup (ajouter un individu, supprimer un individu, modifier un individu).

C’est un concept différent des tableaux de chaines. Pour l’instant, tu n’es pas outillé pour ça. Laisse tomber, et tu arriveras à un moment au tutoriel adapté pour ça.

elegance

Ah ok merci je vais continuer d’avancer dans le cours alors ….

+0 -0

C’est une bonne chose de vouloir faire des exercices, mais il faut que les exercices soient adaptés à ton niveau et surtout qu’ils illustrent ce que tu cherches à apprendre !

As-tu déjà résolu haut la main tous les exercices que proposais le cours dans les chapitres que tu as lu ? Car ils ont étés choisi avec soin pour correspondre à ce que tu dois savoir faire.

Autrement, je sors ma botte secrète ;P
Les defis zestuels : un projet de compilation d’exercice de programmation divers, tombé un peu aux oubliettes. (Un jour j’irai la faire évoluer, promis les agrumes !) Je pense que tu as les moyens de trouver une solution correcte à peut-être une dizaines de ces exercices.
Après un petit parcours de leurs énoncés, je te pose une selection en difficulté croissante :

  1. zBrace
  2. zStrstats
  3. zIdentificator
  4. zGenetique
  5. zBinary
  6. zRomain
  7. zMath
  8. zSudoku

En espérant les avoir évalués correctement :s tu n’auras pas vraiment de correction à ces exo pour le moment (celles dispo sur certains d’entre eux sont en C), alors vient te faire corriger sur le forum.

+0 -0

C’est une bonne chose de vouloir faire des exercices, mais il faut que les exercices soient adaptés à ton niveau et surtout qu’ils illustrent ce que tu cherches à apprendre !

As-tu déjà résolu haut la main tous les exercices que proposais le cours dans les chapitres que tu as lu ? Car ils ont étés choisi avec soin pour correspondre à ce que tu dois savoir faire.

Autrement, je sors ma botte secrète ;P
Les defis zestuels : un projet de compilation d’exercice de programmation divers, tombé un peu aux oubliettes. (Un jour j’irai la faire évoluer, promis les agrumes !) Je pense que tu as les moyens de trouver une solution correcte à peut-être une dizaines de ces exercices.
Après un petit parcours de leurs énoncés, je te pose une selection en difficulté croissante :

  1. zBrace
  2. zStrstats
  3. zIdentificator
  4. zGenetique
  5. zBinary
  6. zRomain
  7. zMath
  8. zSudoku

En espérant les avoir évalués correctement :s tu n’auras pas vraiment de correction à ces exo pour le moment (celles dispo sur certains d’entre eux sont en C), alors vient te faire corriger sur le forum.

romantik

Bonjour, Pour le moment j’ai fais tout les exercices proposer dans le cours de zeste mais je ne les ais pas fait haut la main j’ai du réfléchir un peu et puis regarder à certains exercice la solution car que je n’y arrivais pas mais en regardant la solution j’ai fini par comprendre, par contre j’ai pas encore fais les exercices des algorithmes je dois les faires mais vu que j’ai eu déjà quelques difficulté à faire l’exercice sur les itérateurs j’ai décidé de levé un peu le pied et faire cet exercice la sur la gestion des ouvriers mais bon… Je comprends qu’il faut que je fasses des exercices adaptés merci pour ces exercices j’irais voir.

Encore merci bonne journée à toi.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte