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 :

structure de données


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut structure de données
    salut à tous je vais concevoir un petit programme en c qui gere une facture dans un petit supermarche.apres l'analyse MERISE voici le modele que j'ai trouve:

    client(n°client ,nom,prenom)
    article(n°article,designation,prixunitaire)
    facture(n°client #,n°article #,quantite)

    mon probleme ce que je ne sais pas degager de ce modele la bonne structure de données,c'est-à-dire que j'ai des lacunes sur le plan algorithmique.voulez-vous bien m'aider comment passer d'un modele relationnel une strucuture de données adaptées ames besoins?
    NB:neamoins j'ai entendu dire que le probleme se resolverait en employant la technique de fusion de fichiers

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Je ne vois pas trop où est ton problème d'algorithmique, il suffit de traduire en C

    Les structures Client et Article sont telles que décrites.

    Une facture contient des pointeurs vers des structures (je présume que c'est ce qu'indique ton #) Client et Article (un tableau de pointeurs sur Articles même ?) existantes, car pouvant être partagées entre plusieurs Factures. En utilisant des pointeurs, mettre à jour une structure Client "mettra à jour" toutes les Factures concernant ce client.

    Cela devrait donner un programme dans ce genre :
    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
    30
    struct Client_t
    {
        int numero;
        const char * prenom;
        const char * nom;
    };
     
    struct Article_t
    {
        int numero;
        const char * designation;
        double prix_unitaire;
    };
     
     
    struct Facture_t
    {
        struct Client_t * client;
        struct Article_t * article;
        int quantite;
    };
     
    int main(void)
    {
        struct Client_t unclient = {42, "Bktero", "Developpez"};
        struct Article_t biere = {8, "Duvel", 1.58};
        struct Facture_t unachat = {&unclient, &biere, 8};
     
        return unachat.quantite;
    }

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Bonjour,

    Citation Envoyé par Bktero Voir le message
    En utilisant des pointeurs, mettre à jour une structure Client "mettra à jour" toutes les Factures concernant ce client.
    Est-ce bien pertinent? Une facture ne doit plus évoluer une fois qu'elle a été établie, me semble-t-il. Particulièrement pour le prix. Il doit être celui en cours au moment de l'établissement de la facture et ne pas être mis à jour par la suite.

    Par ailleurs, il peut être intéressant de faire des typedef des structures pour les rendre plus facile à utiliser.

    Cordialement

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Le mot "relationnel" m'a fait sauté dans cette direction mais tu me fais douter...

    Ne faudrait-il pas mettre le pointeur vers le client (ce qui revient à son numéro mais en accès pour rapide pour le retrouver) ? En effet, on peut souhaiter tracer les anciens factures d'un client même si celui-ci change ses données. Ici, il n'y a pas de données susceptibles de changer, mais on pourrait avoir son adresse et son numéro de téléphone. Si on copiait une structure Client_t dans la Facture_t, on ne pourrait plus le contacter s'il change de numéro et qu'il y a un retour produit à faire. Quoique pour un supermarché ça peut se discuter.

    En revanche, pour l'Article_t, il faut utiliser une structure et non un pointeur. Autant pour moi.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Je dirais que tout dépend de ce que veux faire madev.

    De la façon dont je vois les choses, si on veut savoir où a été expédiée telle commande, on ne peut pas le savoir si on met un pointeur.

    Je pense qu'avec deux pointeurs, il serait intéressant de faire un template de facture pour des commande récurrentes. Pour ma part, je mettrais deux structures pour les factures et je ferrais un tableau de structures client pour une fonction annuaire.

    Cordialement

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2008
    Messages : 56
    Points : 77
    Points
    77
    Par défaut
    Du coup, l'idéal, c'est surement deux structures et un pointeur...

    Les deux structures permettent de conserver les données tel qu'elles étaient au moment de la commande et le pointeur permet de consulter l'entrée de l'annuaire correspondant à ce client...

    Encore que l'Id client pourrait être suffisant...

  7. #7
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par madev
    excuse moi pour le mp que je t'envoi,c'est montre quel interet represente pour tous ce que tu vient de m'expliquer.mon probleme ce que je n'arrive pas partant d'un model comme celui que j'ai propose savoir degager une bonne structure de données.puis-je avoir une documentation complete à ce sujet ou?
    A ma connaissance, il n'y a pas de documentation complète et précise sur le sujet. Peut-être que chaque méthode de conception donne des informations. Il s'agit de connaitre les rouages du langage utilisé (présentement le C) pour obtenir une structure de données correspondant aux informations à stocker : une structure pour regrouper des informations, un tableau ou un pointeur vers une zone pour stocker un ensemble, les types de bases selon si ton nombre est à virgule ou pas. Il faut réfléchir et construire ta structure.


    @yann.falevoz : effectivement, une copie du Client_t pour souvenir du destinataire tel qu'il était au moment de la commande et un pointeur vers l'entrée de l'annuaire en cas de modification, cet annuaire est un tableau de structure. La facture contient une structure de l'article tel qu'il était au moment de l'achat. A voir les contraintes du projet pour affiner ce genre de choses

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    s'il vous plait voulez bien me montrer en code ce que yann.falevoz veux dire,une autre chose à servent ces fonctions?

    -sscanf()
    -fflush()
    -cprintf
    -fread()
    -fwrite()
    -_strdate()
    -exit()
    -system("cls")
    quelle difference entre getch() et getche()?

    merci d'avancez pour vos reponses

  9. #9
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Tu tapes dans Google : man <nom de la fonction> et tu auras la doc.

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Citation Envoyé par Trademark Voir le message
    Tu tapes dans Google : man <nom de la fonction> et tu auras la doc.
    Mieux encore, elles sont ici : http://man.developpez.com/

Discussions similaires

  1. Comment créer une structure de donnée dynamiquement ?
    Par Beaunico dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 09h34
  2. Aide pour diagramme de structure des données
    Par DeezerD dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 04/12/2004, 19h10
  3. Méta-Programmation - [ structures de données ]
    Par Dam)rpgheaven dans le forum C++
    Réponses: 3
    Dernier message: 03/12/2004, 19h38
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15
  5. Structure de données de type "RECORD"
    Par chaours dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/09/2002, 17h10

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