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 :

Parc d'attraction en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Par défaut Parc d'attraction en C
    Bonjour,

    J'ai un programme à faire pour la rentrée seulement là je suis complètement bloqué.

    Voici l'énoncé :

    Nous considérons dans cet exercice, qu'un parc d'attraction comporte deux types d'attractions :
    Les attractions dites "libres" auxquelles les visiteurs peuvent accéder librement, sans faire la queue et où ils peuvent rester le temps qu'ils souhaitent. Ces attractions peuvent être, par exemple, des animations. Nous considérons, dans cete exercice, que ce type d'attractions ne possède pas de limite au niveau du nombre de ses visiteurs.
    Les attractions dites "contrôlées" pour lesquelles les visiteurs doivent faire la queue et payer un droit d'entrée. Pour simplifier l'exercice, nous considérons que les clients ne peuvent plus sortir de la queue une fois qu'ils y sont. Par ailleurs, ils en sortent dans le même ordre qu'ils y sont entrés. Bien sûr, une attraction de ce type ne peut admettre qu'un nombre limité de visiteurs. Contrairement aux attractions "libres",une fois entrés dans une attraction "contrôlée", les visiteurs sont contraints d'y rester le temps qu'elle dure celle-ci.

    Dès lors qu'un visiteur quitte une attraction, il est libre d'y rester le temps qu'il souhaite dans les allées du parc avant de retourner dans une autre attraction ou même de quitter le parc.
    Ecrivez un programme qui simule une journée de fonctionnement d'un tel parc d'attraction.
    Voilà de là j'en ai déduit qu'il fallait un thread pour chaque attraction, la même chose pour chaque visiteur. Il faut également un tableau de sémaphores pour gérer les attractions "controlée". A cela j'ai ajouté quelques fonctionnalités comme la gestion du porte monnaie des visiteurs par rapport au coût des attractions contrôlées et je donne aussi l'attraction la plus visité en fonction de son type.

    Voilà voilà le programme plante lors de la création des threads pour le premier et dernier argument de chaque création.

    Voici le fichier http://cjoint.com/?0LBofmPctnT

    PS : L'application doit être developpée sur un Linux .

    Merci d'avance

    Cordialement

    Winflow

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Hello,

    Qu'est-ce qui t'ennuie et où bloques-tu ?


    C'est un projet intéressant au point de vue algorithmique mais c'est BEAUCOUP TROP VAGUE. Est-ce là la totalité de l'énoncé ?

    Tu n'es pas obligé de créer systématiquement des threads pour gérer des objets indépendants. Et heureusement parce que, d'abord, pendant très longtemps les ordinateurs personnels étaient monotâches et ç'aurait été ennuyeux si l'informatique n'avait démarré qu'au milieu des années 2000, ensuite parce que si tu dois créer un thread par visiteur d'un parc d'attraction, ça va faire beaucoup de threads.

    Cela dit, il est probable que ce soit effectivement un exercice pour gérer la synchronisation des processus, la manipulation des sémaphores, etc.

    Un thread par attraction, en revanche, c'est une bonne idée, mais il faut quand même gérer le libre arbitre des visiteurs, puisque c'est eux qui décident de passer un temps aléatoire sur une attraction libre, de flâner dans le parc et de le quitter.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Par défaut
    Cela dit, il est probable que ce soit effectivement un exercice pour gérer la synchronisation des processus, la manipulation des sémaphores, etc.
    C'est en effet le cas. Je bloque lors de la création de mes threads, je passe le thread correspondant à l'indice i de mon tableau et une structure mais ça compile pas. Essaies de regarder le fichier tu comprendras de suite mon problème c'est au niveau du pthread_create.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par winflow Voir le message
    C'est en effet le cas. Je bloque lors de la création de mes threads, je passe le thread correspondant à l'indice i de mon tableau et une structure mais ça compile pas. Essaies de regarder le fichier tu comprendras de suite mon problème c'est au niveau du pthread_create.
    Il faut passer à pthread_create() l'adresse d'une structure pour qu'il puisse la remplir avec les informations du thread nouvellement créé. À l'inverse, tu passes la structure elle-même à d'autres fonctions comme pthread_join() car elles n'ont besoin que de lire les informations concernant ce fil. Ajoute un « & » devant tes entrées de tableau.

    Par ailleurs, le prototype des fonctions appelées par le fil n'est pas « void (*) (void *) » mais « void * (*) (void *) », c'est-à-dire qu'elles reçoivent un pointeur de type void en argument et en renvoient un autre en retour.

    Enfin, le dernier argument passé à pthread_create() est justement l'argument qui sera transmis aux fonctions que tu appelles. C'est donc la encore un pointeur de type void ou plus qualifié qu'il faut transmettre, donc ici un pointeur vers l'élément en question et pas l'élément lui-même.

    Cela donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void * handlerAttrac (void*);
    void * handlerPers (void*);
    
            pthread_create (&tabThreadP[i], NULL, handlerPers, &tabPers[i]);
    Je te laisse toi-même corriger les handlers et surtout les pthread_join() des lignes 129 à 131 car on ne sait pas du tout quel fil tu cherches à attendre : tu passes non pas le descripteur du thread concerné mais un pointeur vers le tableau entier.

    Enfin — et surtout — ton programme crée jusqu'à 1000 THREADS ! Ne t'étonne pas si tu mets ta machine à genoux !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Par défaut
    Je viens de corriger mon programme et j'ai toujours des erreurs je joins mon pgm et les erreurs de compilation.
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Tu n'as tenu aucun compte des remarques que je t'ai faites.

    Tu as corrigé la ligne que je t'ai donnée sans faire attention au fait que les lignes immédiatement suivantes sont également des pthread_create() et souffrent du MÊME problème. Le déboguage fait partie intégrante du métier de développeur.

    Enfin, encore une fois, est-ce que tu te rends compte que tu crées 1000 threads dans ton programme ? Une dizaine devrait être un maximum en temps normal.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2013
    Messages : 46
    Par défaut
    Autant pour moi je n'ai pas fait attention... Ceci dit j'ai mis des gros chiffres pour que ce soit testable et que ça colle un peu près à la réalité ...

    Ceci dit ça ne compile toujours pas ...
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [MySQL] PHP Statistique Déchet pour un parc à conteneur
    Par groggy dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 16/02/2006, 11h09
  2. Gestion d'un parc info
    Par Help me dans le forum Access
    Réponses: 2
    Dernier message: 11/01/2006, 19h01
  3. Réponses: 9
    Dernier message: 19/09/2005, 21h31
  4. Changement de connexion reseau d'un parc informatique
    Par Faith's Fall dans le forum Administration
    Réponses: 3
    Dernier message: 30/05/2005, 18h00
  5. Gestion d'un parc informatique
    Par mock_b dans le forum Débuter
    Réponses: 4
    Dernier message: 16/12/2004, 12h33

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