Sempahore

Bonjour,
lorsque une fille entre dans la douche , une autre fille peut y rentrer mais pas un garcon et la meme chose pour les garcons, une glissiere indique vide, occupe par les fille, occuper par les garcons
ecrire un algorithme avec des sempahores faire des code des fonctions suivants fille-veut-entrer, garcon-veut-entrer, fille-sort, garcon-sort ensuite en utilisant ces 4 fonctions faire le code filles et garcons

voici ma reponse que j ai faite

fille-veut-entrer ()
p(mutex)
p(fille)
repeter
entrer-fille()
finrepeter
V(mutex)
v(fille)
Configuration: Windows XP
Internet Explorer 6.0

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,
    Les sémaphores doivent être binaires ou pas forcément dans ton exercice ?
    Cdt
    1. Ah oui avec un truc genre

      Bool Semaphore
      Si Semaphore := 0
      Semaphore_Allume;
      Sinon Si Semaphore := 1
      Semaphore_Eteint;
      Fin Si
      Fin Si


      ?
      1. rebonjour tout lemonde
        voici une proposition y as t il quelqu un qui pourrait m aider

        entrer_fille()
        debut
        p(entrer_fille)
        compt = compt +1
        si compt = 1 alors
        p(glissiere)
        glissiere = "occupe"
        fsi
        v(glissiere)
        v(entrer_fille)
        fin
        j attend vos remarque a plus
        1. Bonjour,

          J'ai exactement le même exercice et je bloque complètement. Est ce que tu as réussi à avoir une solution depuis? Si oui, je serai intéressée.

          Merci d'avance.
          1. et bien de nos jours on donne des exo sur les semaphores de plus en plus interessant si sa revené a moi je le ferer faux exprès
            1. Si j'ai bien compris il faut créer 4 fonctions et les assigner à la fonction principale ?
              1. Perso je ferais ça ...

                Algorithme Douche(personne, personne2)

                Début

                Tant que personne != 'F' OU personne != 'G' faire

                Ecrire("Qui est dans la douche? (F : fille, G : garçon)");
                Lire(Personne);

                Fin Tant que

                Tant que personne2 != 'F' OU personne2 != 'G' faire

                Ecrire("Qui d'autre veut rentrer? (F : fille, G : garçon)");
                Lire(Personne2);

                Fin Tant que

                Si (personne := 'F') alors
                Ecrire("Occupé par les filles");
                Si (personne2 := 'F') alors
                Ecrire("L'autre fille peut rentrer");
                Fin Si

                Sinon Si (personne2 := 'G') alors
                Ecrire("Le garçon ne peut pas rentrer");
                Fin Si
                Fin Si

                Si (personne := 'G') alors
                Ecrire("Occupé par les garçons");
                Si (personne2 := 'G') alors
                Ecrire("L'autre garçon peut rentrer");
                Fin Si

                Sinon Si (personne2 := 'F') alors
                Ecrire("La fille ne peut pas rentrer");
                Fin Si
                Fin Si

                Fin Douche
                1. Contributeur
                  Oui, sauf qu'il veut avec des sémaphores ^^.
              2. Contributeur
                C'est déjà mieux.
                En fait c'est juste avec des P() et des V() comme dans son exemple.
                Mais, je me demande s'il doit utiliser des sémaphores binaires ou pas forcément.
                1. non pas necessairement des semaphore binaire , juste les p() et v() je vous remercie