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

  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
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    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
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    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
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    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

  8. #8
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    C'est parce que tu n'as pas tenu compte de la ligne que j'ai écrite après avoir corrigé tes pthread_create() :

    Citation Envoyé par Obsidian
    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.

    Il faut lire ce log, c'est à ça qu'il sert : il te donne à la fois le numéro de ligne et un message de description de l'erreur. Par exemple :

    parc.c: In function ‘main’:
    parc.c:129:3: attention : passing argument 1 of ‘pthread_create’ makes pointer from integer without a cast [enabled by default]
    parc.c:129:3: erreur: incompatible type for argument 4 of ‘pthread_create’

    Ce qui signifie littéralement :

    Dans la fonction main :
    À la ligne 129 (troisième colonne), attention : passer le premier argument de pthread_create fabrique un pointeur à partir d'un entier sans utiliser de transtypage (cast) ;
    Toujours au même endroit, erreur : Type incompatible de l'argument numéro 4 de pthread_create

    Ça veut donc dire qu'il faut que tu te rendes à la ligne 129 de ton programme, et que tu y examines les premier et quatrième arguments de ta fonction, puisque tu ne passes visiblement pas les bonnes valeurs.

    Si tu ne vois pas en quoi ce sont les mauvaises, il faut lire les message : dans le premier, tu passes un entier au lieu de passer un pointeur. Dans le quatrième, tu passes un argument du mauvais type (qu'il ne sait pas convertir seul), donc probablement le mauvais.


    Enfin, 1000 threads, c'est mal. Il ne s'agit pas de coller à la réalité ou pas : c'est une erreur de conception.

  9. #9
    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 ne comprend pas pourquoi ça passe un pointeur sur un entier ça devrait passer un pointeur sur pthread_t parce que mes allocations dynamiques sont pourtant bonnes je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Allocation dynamique pour les personnes
    	tabPers = (PERSONNE*) malloc (nbPers*sizeof (PERSONNE));
    	tabThreadP = (pthread_t*) malloc (nbPers*sizeof (pthread_t));
    	// Allocation dynamique pour les attractions payantes
    	tabAttrac_P = (ATTRACTION_PAY*) malloc (nbAttrac_P*sizeof (ATTRACTION_PAY));
    	tabThreadAttrac_P = (pthread_t*) malloc (nbAttrac_P*sizeof (pthread_t));
    	// Allocation dynamique pour les attractions gratuites
    	tabAttrac_F = (ATTRACTION_FREE*) malloc (nbAttrac_F*sizeof (ATTRACTION_FREE));
    	tabThreadAttrac_F = (pthread_t*) malloc (nbAttrac_F*sizeof (pthread_t));
    Cela veut dire que çavient de mes allocations dynamiques je ne vois pas où autrement...

    J'ai bien evidemment lu ce log mais je ne comprend pourquoi ça me dit ça ><

    Pour le paramètre 4 cela devrait passer puisque ma fonction prend un void* .

    Sinon il faudrait faire un cast explicite de type (pthread_t*) et (void*) tu crois ?

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Citation Envoyé par winflow Voir le message
    Cela veut dire que çavient de mes allocations dynamiques je ne vois pas où autrement...
    Non, cela vient du fait que tu t'emmêles les pinceaux dans tes types de données et que tu confonds élément, pointeur sur ton élément, tableau d'éléments et pointeur sur le début du tableau. Et c'est bien compréhensible quand on débute. Seulement, quand ça arrive, il ne faut pas foncer tête baissée mais, au contraire, reprendre tout cela calmement et plus lentement. Même si la deadline est proche, c'est quand même de cette façon que tu gagneras le plus de temps.

    J'ai bien evidemment lu ce log mais je ne comprend pourquoi ça me dit ça ><
    Alors c'est par cela qu'il faut commencer. Comprendre la signification des messages du log. L'ordinateur ne se trompe jamais. Si un tel message s'affiche, c'est que quelque chose est incorrect quelque part, même si c'est incompréhensible.

    Pour le paramètre 4 cela devrait passer puisque ma fonction prend un void* .
    C'est bien ce que l'on dit : « tu fabriques un pointeur à partir d'un entier ». Ta fonction attend bien un pointeur (un « void * ») mais toi, tu lui passes un entier.

    Sinon il faudrait faire un cast explicite de type (pthread_t*) et (void*) tu crois ?
    Non, il faut réparer l'erreur en amont.


    D'autre part, relis bien les man pages de pthread_create() et pthread_join(), et plus précisément les prototypes de ces fonctions dans le synoptique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int pthread_create(pthread_t * thread, pthread_attr_t * attr, void * (*start_routine)(void *), void * arg);
    int pthread_join(pthread_t th, void **thread_return);

    « pthread_create » attend un « pthread_t * » (avec une étoile) là où « pthread_join » attend un « pthread_t » (sans étoile).

    « pthread_t » est un type défini par un typedef qui sert à identifier un thread. Si on ouvre les fichiers *.h, on s'aperçoit en fait qu'il s'agit d'un simple entier long non signé, c'est-à-dire un descripteur qui contient le numéro du thread. Ceci est volontairement caché aux yeux du programmeur.

    Ça veut dire surtout que la manière normale d'exploiter les threads est de passer aux fonctions concernées leur identifiant, de type pthread_t. Mais pthread_create(), elle, attend un « pointeur sur un pthread_t » parce que le thread en question n'existe pas encore au moment où tu l'appelles. Il faut donc lui indiquer une variable dans laquelle elle pourra déposer l'identifiant nouvellement créé. Ce « pointeur sur un pthread_t » est donc l'adresse de la variable en question (d'où l'usage du &).

    On pourrait s'attendre à ce que pthread_create() renvoie directement cet identifiant en tant que valeur de retour, mais comme cette fonction peut échouer, elle utilise le code de retour comme statut d'erreur ou de succès, et dépose l'information demandée à l'endroit où tu lui as dit de le faire.

    Sache également (si c'est ce qui t'ennuie) que « malloc » n'est pas l'équivalent de « new » en Java. « malloc » signifie « memory allocation » et… alloue de la mémoire. Elle te renvoie donc un pointeur vers l'emplacement de la mémoire qu'elle t'a réservée. Libre à toi de faire bon usage de celle-ci.

  11. #11
    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
    Pour le premier paramètre de il veut un pointeur sur quand je fait
    je fourni l'adresse du ième élément de mon tableau et comme un pointeur c'est une adresse cela devrait fonctionner ! Donc pourquoi ?

    Pour le quatrième paramètre il veut un , je dois impérativement lui passer la structure donc je n'ai qu'une solution c'est le cast explicite ! Sinon comment faire ?

    Pour je suppose qu'il faut retirer le "&" puisqu' on attend un élement de type et non Réglé le problème en amont signifie modifier mes déclarations ou mes typedef et je ne pense pas m'être tromper la dessus.

  12. #12
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Citation Envoyé par winflow Voir le message
    Pour le premier paramètre de il veut un pointeur sur quand je fait
    je fourni l'adresse du ième élément de mon tableau et comme un pointeur c'est une adresse cela devrait fonctionner ! Donc pourquoi ?
    Ces lignes fonctionnent chez moi (au moins pour l'argument 1).
    Es-tu sûr d'avoir recompilé le bon fichier (i.e. celui que tu as modifié et pas sa copie ?)


    Pour le quatrième paramètre il veut un , je dois impérativement lui passer la structure donc je n'ai qu'une solution c'est le cast explicite ! Sinon comment faire ?
    Passer l'adresse de la variable qui contient ton entier (en faisant en sorte qu'elle existe toujours au moment du lancement du thread, sinon tu risques la segfault).

    Pour je suppose qu'il faut retirer le "&" puisqu' on attend un élement de type et non
    Absolument. Dans le dernier code joint, cependant, ils y sont toujours.

  13. #13
    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
    En effet mauvais fichier --' ...

    J'ai une erreur :

    bash: Erreur de syntaxe près du symbole inattendu « ( »

    J'ai parcouru le programme et je n'ai pas trouvé de "(" sans ")" --'.

    D'autre part je viens de me rendre compte d'un truc ... Comment je fais pour accéder aux attractions payantes depuis mon handlerPers ? Meme question pour les personnes depuis mon handlerAttrac ?

    Je suis bien obliger d'y avoir accès puisque je dois faire ma prise de sémaphore...
    Au moins avoirs accès aux ids ...
    Fichiers attachés Fichiers attachés

  14. #14
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    C'est bien de suivre ton fil mais il faudrait éviter de systématiquement déposer le moindre message d'erreur sur le forum en espérant qu'on te le dépanne. Comme on te l'a dit, le déboguage fait partie intégrante du métier de développeur, et ça peut même être devenir passionnant si tu le prends comme une enquête.

    Citation Envoyé par winflow Voir le message
    bash: Erreur de syntaxe près du symbole inattendu « ( »

    J'ai parcouru le programme et je n'ai pas trouvé de "(" sans ")" --'.
    Il y a écrit « bash ». Tu essaies d'exécuter ton fichier source C sans le compiler ?

  15. #15
    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
    Non j'ai juste tapé cette commande pour compiler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc parc(copie).c -pthread -o parc

  16. #16
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 444
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 444
    Par défaut
    Dans ce cas, c'est parce que tu utilises des parenthèses dans ton nom de fichier. Les parenthèses ont une signification syntaxique pour bash et il essaie de les interpréter.

    Soit tu renommes ton fichier en n'utilisant que des caractères ordinaires, soit tu les échappes en faisant précéder chaque caractère spécial par un « \ », soit tu encadres le nom entiers avec des guillemets « " " » ou des apostrophes « ' ' ».

  17. #17
    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
    la pour le coup je ne m'attendais pas à ça mais cela fonctionne.
    Aurais tu une idée pour le problème que j'ai énoncé plus haut ?

  18. #18
    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
    J'ai peut être une petite idée mettre les attractions en variables globales et passer en paramètre les personnes dans hander attrac.

    Cela est-il une solution possible et envisageable ?

  19. #19
    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
    J'ai essayé de faire comme je viens de le dire mais j'ai une erreur de segmentation pourrais tu regarder stp
    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