Programme

Fermé
infobens Messages postés 33 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 3 mai 2007 - 10 avril 2005 à 14:33
infobens Messages postés 33 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 3 mai 2007 - 16 avril 2005 à 18:02
bonjour,je suis content de venir sur cet site et j'ai un problème:
avec un programme : les philosophes des diseurs:
cinq philosophes sont assis sur une table ronde devant un plat de spaghetti bien glisant separant par une fouchette qu'ils sont obliges de les manges avec 2 fouchettes celle a sa gauche puis celle a sa droite.les philosophes passent leurs temps a manger ou a penser.comment ecrire un programme pour que les philosophes se livrent a leurs activites sans jamais etre bloque.
merci je compte sur votre precieux concours pour m'aider a les resoudre ou tout au moins a poser les premieres pierres.
merci.....

11 réponses

dsl, j'ai pas compris la problematique.

@++
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
11 avril 2005 à 00:07
mOI TON PROBL7ME ME FAIT PENSER AU PARTAGE DES RESSOURCES ENTRE PROCESSUS...

Donc inspire toi de ça pour commencer....

Bonne chance ++
0
Utilisateur anonyme
11 avril 2005 à 01:39
Voui, c'est un problème avec les sémaphores et tout ça !
je regarderais demain, je crois que j'ai toujours mes cours là dessus !
0
j'ai besoin d'aide sur la céation d'un MCD puisque notre formation en informatique de gestion demande de rédiger un projet de fin d'etude et j'ai choisi de faire un projetsur mon école qui set à ridiger des bullettin de notes des eléves et j'ai trouve des problemes au nivau de l'analyse MCD.
aidez moi s'il vous plais
MERCI
0
Utilisateur anonyme
11 avril 2005 à 13:53
Salut

Commence un nouveau post, ta demande n'a aucun rapport avec celui ci :)

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Post original >>
Non, ce n'est pas un problème de sémaphore, puisque le philosophe doit OU manger OU penser, mais pas ATTENDRE !!!
Ceci dis, ça y ressemble peut-être.

Tant que infobens aura pas précisé dans un language correct et précis son problème, personne ne pourra le résoudre (ou alors il est très fort... Ou a eu le même prof ;°)
0
si j'ai bien compris ils sont 5, ont chacun une fourchette, mais pour manger il leur en faut 2, donc il y en a qui mangent (en empruntant la fourchette du voisin) et les autres pensent. Il nous manque l'unité de temps...

j'ai une intuition, si ceux qui ont les fourchettes font manger ceux qui n'en n'ont pas, on passe de 2 à 3 mangeurs en simultané....

avec tout ça, je vais finir par allez m'en faire des spagghetti et inviter 4 potes,.....
Seb si tu fait rien Samedi ......

@++
0
Utilisateur anonyme
12 avril 2005 à 12:24
Bonjour

Regardez là :
http://tinyurl.com/4brot
et là :
http://tinyurl.com/5mk2e

A+
0
Ha OUAIS !!!!!
Merci Agnes, j'ai ENFIN compris la problématique !!!
Effectivement, je retire l'intégrale de mon premier post, j'avais vu les choses sous un tout autre angle... (au passage, la prochaine fois, infobens, pose ton PB clairement, ça m'évitera de passer pour un ***).

p.legal >> Si tu met du parmesant dans la sauce, je viens aussi.
J'apporterais mon jeu de dames.
0
j'ai fait un truc simple basé sur une mise en liste d'attente.
voila le resultat :

Liste d'attente
place Philosophe
1 4
2 2
3 3
4 1
5 5

le philosophe 3 à fini de penser
il se met à manger pendant 900 ms
le philosophe 5 à fini de penser
il se met à manger pendant 100 ms
le philosophe 5 à fini de manger
il est mis en liste d'attente
le philosophe 1 à fini de penser
il se met à manger pendant 900 ms
le philosophe 3 à fini de manger
il est mis en liste d'attente
le philosophe 4 à fini de penser
il se met à manger pendant 700 ms
le philosophe 1 à fini de manger
il est mis en liste d'attente
le philosophe 2 à fini de penser
il se met à manger pendant 100 ms
le philosophe 2 à fini de manger
il est mis en liste d'attente
le philosophe 1 à fini de penser
il se met à manger pendant 500 ms
le philosophe 1 à fini de manger
il est mis en liste d'attente
le philosophe 4 à fini de manger
il est mis en liste d'attente
le philosophe 5 à fini de penser
il se met à manger pendant 400 ms
le philosophe 2 à fini de penser
il se met à manger pendant 100 ms
le philosophe 2 à fini de manger
il est mis en liste d'attente
le philosophe 3 à fini de penser
il se met à manger pendant 400 ms
le philosophe 5 à fini de manger
il est mis en liste d'attente
le philosophe 1 à fini de penser
il se met à manger pendant 800 ms
le philosophe 3 à fini de manger
il est mis en liste d'attente
le philosophe 4 à fini de penser
il se met à manger pendant 500 ms
0
Et voila le code en Liberty BASIC.

dim philo(5,3)
dim fourch(5)
dim listAtt(7)

'placer les philosophes dans un ordre aleatoire dans la liste d'attente
for i=1 to 5
    [hazard]
    scan
    blok=0
    hazard=int(rnd(1)*5)+1
    for j=1 to i
        if hazard=listAtt(j) then blok=1
    next j
    if blok=1 then goto [hazard]
    listAtt(i)=hazard
next i

print "place  Philosophe"
for i=1 to 5
    print "  ";i;"         ";listAtt(i)
next i

[mainloop]
    if count<25 then timer 100, [boucle]
    wait

[boucle]
    timer 0
    scan
    count=count+1
    oklib=0
    gosub [liberation]
    'gosub [affichListPhilo]
    'gosub [affichListAtt]
    if oklib<>0 or count=1 then
        gosub [attribution]
    end if
    goto [mainloop]
    
[liberation]
    for lib=1 to 5
        duree=philo(lib,3)
        if duree>0 then
            philo(lib,3)=duree-100
            if philo(lib,3)<=0 then
                print "le philosophe ";lib;" à fini de manger"
                if lib=1 then
                    fourch(5)=0
                else
                    fourch(lib-1)=0
                end if
                fourch(lib)=0
                oklib=1
                gosub [miseListAtt]
            end if
        end if
    next lib
    return
    
[miseListAtt]
    for list=1 to 5
        latt=listAtt(list)
        if latt=0 then
            listAtt(list)=lib
            print "il est mis en liste d'attente"
            exit for
        end if
    next list
    return
    
[attribution]
    for att=1 to 5
        philosophe=listAtt(att)
        if philosophe=0 then exit for
        fourch1=fourch(philosophe-1)
        fourch2=fourch(philosophe)
        if philosophe=1 then fourch1=fourch(5)
        if fourch1=0 and fourch2=0 then
            duree=int(rnd(1)*10+1)*100
            philo(philosophe,3)=duree
            gosub [majList]
            gosub [majFourch]
            print "le philosophe ";philosophe;" à fini de penser"
            print "il se met à manger pendant ";duree;" ms"
        end if
    next att
    return
    
[majList]
    if att<5 then
        for j=att to 4
            listAtt(j)=listAtt(j+1)
        next j
    end if
    listAtt(5)=0
    return
    
[majFourch]
    if philosophe=1 then
        fourch(5)=1
    else
    fourch(philosophe-1)=1
    end if
    fourch(philosophe)=1
    return
0
infobens Messages postés 33 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 3 mai 2007
16 avril 2005 à 18:02
meri p legal je suis content de voir que tu veux m'aider et je vous en remerci mais j'ai un petit probleme a savoir si vous pouvez m'aider a le mettre plutot en un langage c ou tout simplement l'algorithme serais aussi mieux.
merci et je compte sur vous .....
0
infobens Messages postés 33 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 3 mai 2007
16 avril 2005 à 17:55
merci de bien vouloir m'aider et j'aimerais que vous me le fait plutot en un langage de c.
merci et je compte sur vous pour votre aide..
0