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 :

tableaux ou non ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Par défaut tableaux ou non ?
    Bonjour,

    voilà je voudrais faire un programme constitué de tableaux. Je suis débutant et pour l'instant je ne sais faire que les tableaux à une dimension.

    Le probléme c'est que j'aimerais stocké deux types de données qui seraient en relation l'une avec l'autre.

    Ainsi je pensais faire un tableau de clients et un tableau de produits.

    Mon objectif est de pouvoir mettre en laisons les valeurs de ces deux types de donées. Par exemple lorsqu'un client commande un produit, il faudrait que le tableau de produits comptabilise une cellule en moins.

    Ainsi au prochain coup on peut indiquer au client que il aura le produit ayant la référence au dessus ou en dessous. La contrainte vient aussi du fait que cela soit enregistré pour que au rechargement du programme, on se rappel des valeurs restantes.

    Est ce que selon-vous d'une part, cela est possible ensuite cela vous parait-il adapté.


    Je vous remercie de votre attention.

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    cela est possible
    Tout est possible en programmation.

    cela vous parait-il adapté.
    En fait, si tu t'en sort sans te prendre trop la tête et que tu as ce que tu veux, aucun soucis.

    Le probléme c'est que j'aimerais stocké deux types de données qui seraient en relation l'une avec l'autre.
    Ou est le problème, les relations seront mises en place à l'aide de fonctions.

    Maintenant que tu as exprimé tes questions/remarques, je t'en pose une :

    Quel est le rapport avec le langage C ?

    Comme je sens venir la réponse rapidement : "C'est que je veux faire mon programme en C", laisse moi te répondre que ta question serait plus à sa place dans un autre forum ...

  3. #3
    Membre extrêmement actif

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par défaut
    J'ai pas tout trés bien compris mais voila ce que je propose.

    Définir tes types de données par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct s_client { int s_id;char s_[50],char s_adresse[50],char s_sexe}
    struct s_produit { int s_id;char s_nom[50],int type}
    struct s_liaisonProduitClient { int s_idclient,int s_idproduit}
     
    struct s_client TS_CLIENT[10]={0};
    struct s_produit TS_PRODUIT[10]={0};
    struct s_liaisonProduitClient TS_LIAISON[10]={0};
    Effectuer les traitements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    s_client NouveauClient(){//saisir les informations clients}
    s_produit NouveauProduit(){//saisir les informations produits}
    s_liaisonProduitClient NouvelleLiaison(){//Faire une selection d'un client et d'un produit;recuperer les id des objets;...}
    C'est quelque chose du genre que tu cherches ?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Par défaut
    oui effectivement c'est ce qui pourrait correspondre à ma recherche, je n'étais pas sur qu'on pouvait faire une liaison entre deux structures.

    Donc tu m'indique qu'il serait jouable de créer trois tableaux, d'indiquer dans ceux-ci les indices de mes clients et de mes produits en relation ? je devrais voir ca à tête reposé, moi pour l'instant j'essaierai juste de mettre au cours d'une saisie des données dans les tableaux à la fois en s'assurrant que celle-ci soit liées (ce sera surement avec in 3éme tablo mais pour l'instant, j'ai voulu essayer)

    je vais essayer de présentre cà en C pour rester dans les clous.

    Dans ce cas, est ce que ainsi, je peux à la fois renseigner tabclient et tabproduit ? :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    /*-------saisie-------*/
     
    struct acheteur{
    char nom[20];
    char adresse[20];
    };
     
    struct acheteur client tabclient[100];
     
    struct produit{
    int numP
    char lettreP[20];
     
    }; 
     
    struct objet produit tabproduit[100];
     
     
    {
      {
    printf ("entrez votre nom");
    scanf ("%s", nom.client");
    printf ("entrez votre adresse");
    printf ("%s", adresse.client");
      }
    tablient[i++]=client
     
    //là je veux que un numéro soit affecter automatiquement  ainsi que une lettre, disons A, dans une case de mon tablproduit.
     
    scanf("%s", numP.produit);//déjà pas sur qu'un scanf soit bon ici
    scanf("%d", lettreP.produit);
    tabproduit[i++]=produit); 
     }
    nbclient=i;
     
    /*----affichage------*/
     
    struct objet produit
    struct acheteur client;
    if (nbclient>0){
    for (i2=0; i2<nbclient; i2++){
    client=tabclient[i2];
    printf ("Nom : %s\n Adresse : %s\n, client.nom client.adresse);
     
    et là pareil ca coince il faudrait que je retrouve automatiquement le produit associé. je devrais peut-être faire une recherche, ce que j'imagine c'est cà :
     
    scanf("%s", produitassocie);//encore une fois je suis pas sur de bien utilisé le scanf
    num=recherche(lettrerech);
    if(num!=-1)
    {
    produit=tabproduit[num];
    printf ("%d %s_n", numP, lettreP);
    }
     
     
                                  }
                        }
    }
     
    voici ma recherche
    for (j=0; j<nbclient, j++)
    {
    produit=(strcmp(produit.lettre, lettrerech)==0);
    if (trouve)
    numcase=j;
    }
    return numcase;
    }

    c'est un peu décousu malheureusement, mais effectivement je penses que j'aimerais bien renseigner deux tableaux et savoir incrémenter des valeurs automatiquement dans l'un d'eux lorsque je renseigne un premier tableau.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct objet produit tabproduit[100];
    Ca serait pas plutot:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    struct produit tabproduit[100];

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Sinon pour scanf:

    http://emmanuel-delahaye.developpez....tes.htm#saisie

    est un article trés instructif qui permet d'éviter beaucoup d'erreur.

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Attention:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf ("%s", nom.client);
    scanf("%s", numP.produit);
    scanf("%d", lettreP.produit);
    il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf ("%s", &client.nom);
    scanf("%s", &produit.numP);
    scanf("%d", &produit.lettreP);
    1°:le 2eme argument de scanf est une référence, donc le précéder de &;
    2°:quand on appelle un élément "element" d'une structure "structure" on fait structure.element et non element.structure.

  8. #8
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Attention aus points virgules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int numP
    struct objet produit
    ne compilera pas, mais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int numP ;
    struct objet produit ;
    oui

  9. #9
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (j=0; j<nbclient;j++) 
    for (i2=0; i2<nbclient; i2++)
    il faut déclarer les variables j et i2 avant.

  10. #10
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 116
    Par défaut
    oui c'est vrai, en fait tout ca je le maitrise, juste là j'ai pas fait attention mais tu as l'oeil, et moi je tourne de l'oeil.

    autrement moi j'employais le scanf pour afficher un texte à l'écran provenant d'une variable (en l'ocurence de mon tablo, genre lettreP) mais je vois bien que ca va pas, est ce que y a un truc pour l'afficher cette valeur sans qu'on l'est tapé avant ?

  11. #11
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par seriousme
    Attention:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf ("%s", nom.client);
    scanf("%s", numP.produit);
    scanf("%d", lettreP.produit);
    il faut mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    scanf ("%s", &client.nom);
    scanf("%s", &produit.numP);
    scanf("%d", &produit.lettreP);
    1°:le 2eme argument de scanf est une référence, donc le précéder de &;
    2°:quand on appelle un élément "element" d'une structure "structure" on fait structure.element et non element.structure.

    Une ``référence'' ? Quésako ? On fait du C ici...
    De plus, ces '&' n'ont strictement rien à faire là pour les scanf concernant la saisie d'une chaîne de caractère.

    C'est bien de corriger, c'est mieux quand on ne dit pas de bêtises.
    Par ailleurs, il existe un bouton ``Editer'', ca t'évitera de flooder le thread...
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  12. #12
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par jive
    est ce que y a un truc pour l'afficher cette valeur sans qu'on l'est l'ai tapé avant ?
    printf()

    Il serait peut être temps d'ouvrir un livre de C...

  13. #13
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Si j'ai bien compris, ce que tu veux, en fait, c'est créer une table d'association entre un client et un certain nombres de produits.

    Algorithmiquement, ça se fait généralement avec un arbre rouge-noir je crois.

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par loufoque
    Si j'ai bien compris, ce que tu veux, en fait, c'est créer une table d'association entre un client et un certain nombres de produits.

    Algorithmiquement, ça se fait généralement avec un arbre rouge-noir je crois.
    Tu dis ça à un gars qui ne connait pas printf () ? Tu prends des risques...

  15. #15
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Citation Envoyé par Pouic
    Une ``référence'' ? Quésako ? On fait du C ici...
    De plus, ces '&' n'ont strictement rien à faire là pour les scanf concernant la saisie d'une chaîne de caractère.
    Au temps pour moi pour la référence!

    Par contre pour le & j'ai essayé sans avec Dev-C++...il compile,linke et me fait un bel éxécutable...qui plante lamentablement!!!!!!!


  16. #16
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Euh, Tout bien considéré il plante aussi avec!!!!!!!!!!!!!!!!!!!!!

  17. #17
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Le &, il en faut un pour les scanf("%d") et il n'en faut pas pour les scanf("%s").
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Par contre pour le & j'ai essayé sans avec Dev-C++...il compile,linke et me fait un bel éxécutable...qui plante lamentablement!!!!!!!
    Quelle est l'extension de ton fichier source ?

  19. #19
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    c'est un .cpp.

    Le truc par defaut.

  20. #20
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par seriousme
    c'est un .cpp.

    Le truc par defaut.
    Premièrement, on est dans un forum C donc les .cpp ne sont pas dans le bon forums. Il existe une option dans DevC++ pour faire du C (du moins à mon souvenir)

    Ensuite, poste le code qui fait planter mais à mon avis c'est parce que tu enlèves tous les &...

    Jc

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/05/2015, 07h39
  2. Excel > ppt : des tableaux et non pas des graphes
    Par nat54 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 14/11/2008, 08h38
  3. [Tableaux] Variable non considéré comme un chiffre
    Par Merlon dans le forum Langage
    Réponses: 7
    Dernier message: 27/06/2007, 12h08
  4. [Tableaux] Variable non reconnue
    Par oceane751 dans le forum Langage
    Réponses: 31
    Dernier message: 05/01/2007, 23h22
  5. [Tableaux] Retour non conforme
    Par Mister Nono dans le forum Langage
    Réponses: 3
    Dernier message: 03/11/2005, 12h06

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