IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

C++ Problème liste d'attente élaborée


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut C++ Problème liste d'attente élaborée
    Bonjour à tous,

    nouveau sur ce site j'aurais besoin de conseil de pro ..

    j'ai besoin définir une file d'attente en C++ à partir de priorité de de position d'arriver

    ENONCE
    File d’attente élaboré

    Un patient a un nom et un type. Il y a trois types de patients T1 : les très urgent ; T2 : urgent et T3 : non urgent.

    J’ai une file d’attente unique (salle d’attente) pour ces trois types de patients. La règle est : a priorité égale, premier arrivée premier servi », sinon le T1 passent devant les T2 qui passent devant les T3.

    Exemple : file vide. Arrivent « Joe, T3 » puis « Jack T3 » puis « William » T2. La file est <William, Joe, Jack>. Le médecin se libère, il traite donc « William ». Arrivent « Lucky Luke T1 » puis « Avrell T2 ». On a donc <Lucky Luke, Avrell, Joe, Jack>. Arrivent ensuite « Jessie James T1 », « Billy the Kid T2 » et « Ma Dalton T3 ». On a donc <Lucky Luke, Jessie James, Avrell, Billy the Kid , Joe, Jack, Ma Dalton>.

    Le programme doit pouvoir (menu principal en fait) :
    - Afficher la liste en cours ;
    - Ajouter une personne ;
    - Supprimer le premier de la file ;
    - Sauvegarder/récupérer la file.

    Si quelqu'un a deja fait ca ou c'est me dire comment gérer le file d'attente, ce serai gentil ;-)

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    où bloques-tu exactement?

  3. #3
    Membre expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Points : 3 344
    Points
    3 344
    Par défaut
    Cela te donnerai la solution à cet exercice.

    Il serait plus interessant pour toi de te poser les bonnes questions en lisant le problème:
    - qu'est-ce qu'une file d'attente, de manière abstraite? quel est son role?
    - qu'est-ce que va contenir ta file?
    - quelles sont les actions a effectuer?
    - etc...

    Je t'ai donnée des premiers indices.

  4. #4
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Valou6323 Voir le message
    Si quelqu'un a deja fait ca ou c'est me dire comment gérer le file d'attente, ce serai gentil ;-)
    std::priority_queue...
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  5. #5
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    std::priority_queue...
    Afin de gagner du temps, je me propose d'anticiper la suite :

    Oui, mais j'ai pas le droit....

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Le principe est assez trivial et peut s'envisager sous la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si  Priorité de l'élément à insérer inférieure a un élément testé
        passer à l'élément précédent dans la file
    Sinon
        insérer l'élément entre l'élément testé et son suivant
    Fin Si
    Reste à savoir:
    1. comment comparer la priorité des éléments à insérer
    2. comment insérer un élément entre deux autres
    3. comment relier les différents élément les un aux autres
    A toi de jouer
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par poukill Voir le message
    Afin de gagner du temps, je me propose d'anticiper la suite :

    Oui, mais j'ai pas le droit....
    Sauf le droit de s'en inspirer ?
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Vu l'algo, je ne me serais pas enquiquiner.
    Trois files en fonction du type de patient et récupération dans la liste de plus haut priorité non vide.
    Reste plus que le verrouillage des inserts durant le scan des 3 files.

  9. #9
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Vu l'algo, je ne me serais pas enquiquiner.
    Trois files en fonction du type de patient et récupération dans la liste de plus haut priorité non vide.
    Tu imagine la difficulté de l'algorithme, si tu le fais ainsi

    L'insertion serait effectivement facile, mais pour le reste, tu tombe sous une forme proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Pour Renvoyer le patition de plus haute priorité
     
    si urgent non vide
        renvoyer urgent top
    sinon 
        si moyen non vide
            renvoyer moyen top
        sinon 
            si non_urgent non vide
                renvoyer non_urgent top
            fin si
        fin si
    fin si
    renvoyer rien
     
     
    Pour sortir un patient de la liste
    si patient:priorite egal urgent
        retirer urgent top
        sinon 
        si patient: priorite égal moyen
            retirer moyen top
        sinon 
            si patient:priorite égal non_urgent
                retirer non_urgent top
            fin si
       fin si
    fin si
    Si tu places tous les patients dans une seule et même liste, l'insertion sera certes un peu plus lente, mais le reste de la gestion se fera beaucoup plus rapidement, vu que tu évite les tests
    [/QUOTE]Reste plus que le verrouillage des inserts durant le scan des 3 files.[/QUOTE]Ce serait plus problématique que cela...

    Tu utiliserais sans doute le double check; verrouiller, tester si vide, déverrouiller retester.

    Avec trois listes, rien ne t'empêche d'ajouter un élément dans les listes sur lesquelles tu ne travaille pas (il serait dommage de verrouiller les trois listes alors que tu ne travailles que sur une).

    tu devrais donc revérifier les listes de priorité supérieure lors deux deuxième test Encore du temps de perdu
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  10. #10
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Le prix d'un déplacement pour insertion me parait tellement aberrant, que je foncerai sans hésiter une seule seconde vers la triple file -- si NIH interdisant la solution standard.

    Quant au lock ... le temps des déplacements est tel, que c'est pour moi un argument de plus en faveur de la triple file -- un seul lock global suffisant amplement comparé à 3 micro-locks (et si on a accès à des listes lock-free, le problème ne se pose pas)(quant à l'aspect : un cas urgent arrive alors que l'on pioche la fiche d'un cas de moindre priorité, c'est tant pis, il faut rester simple).

    Maintenant, j'ai tendance à supposer qu'il y a beaucoup d'éléments dans la queue pour justifier un système de passe-droits. La dimension du problème est à étudier avant de valider la meilleure des approches.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  11. #11
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Le prix d'un déplacement pour insertion me parait tellement aberrant, que je foncerai sans hésiter une seule seconde vers la triple file
    Il me parait tellement aberrant, que j'utiliserais peut-être une structure de base où il n'existe pas (liste chaînée).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Tri d'une liste d'attente avec priorité
    Par boutchz dans le forum Access
    Réponses: 8
    Dernier message: 02/03/2006, 18h42
  2. Purger la liste d`attente d`une imprimante?
    Par redabadache3 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 21/12/2005, 09h36
  3. Réponses: 2
    Dernier message: 21/01/2005, 12h55
  4. Problème liste d'affichage
    Par nicolas66 dans le forum OpenGL
    Réponses: 6
    Dernier message: 06/12/2004, 10h10
  5. [JSP]Problème liste deroulante dynamique
    Par besco dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 09/09/2004, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo