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 :

"Tableau" avec plusieurs types de variables


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Points : 34
    Points
    34
    Par défaut "Tableau" avec plusieurs types de variables
    Salut tout le monde,
    Je voudrai faire une sorte de tableau à 2 dimensions, mais qui ne contient pas un seul type de données :
    En gros je voudrais un tableau "villesVoisines" qui contient à la première colonne des objets "ville" et à la deuxième les distances qui séparent la ville courante de la ville voisine de cette même ligne.
    Je vois pas trop comment faire ça, enfin si mais ça serait englober tout ça dans une classe et je pense qu'il y a plus simple, mais je vois pas trop... Des idées?
    Merci d'avance et bonne soirée à tous

  2. #2
    Membre confirmé
    Avatar de Schmorgluck
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2006
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Faire deux tableaux à une dimension, ou utiliser une structure.
    Mais conceptuellement, tu ferais mieux de créer une classe pour tes villes, et je crois bien que tu devrais lorgner vers ce qui existe en matière de graphes : ton problème se traduit très bien en graphes (même si c'est un graphe linéaire pour le moment, si j'ai bien compris) et ça serait plus évolutif.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    La conception je connais pas donc ça m'étonne pas trop ce que tu me dis
    en fait j'ai une classe CGraph qui est en gros un vector de CNode, et ce CNode doit avoir une liste de ses "successeurs" avec leurs distances. Si il y a moyen de faire mieux que ça... je suis preneur.
    Merci de ta réponse

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    362
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 362
    Points : 410
    Points
    410
    Par défaut
    Salut,

    Tu y es presque ! Dans l'esprit c'est pas mal.

    Tu peux par exemple faire que chaque CNode possède non-pas un vecteur de CNode, mais un vecteur de CLink.

    Et tu définit CLink comme étant une classe qui contient une distance et un pointeur de CNode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     ________
    |  CNode |         _______
    |--------|        | CLink |
    | CLink1 |        |-------|          _______
    | CLink2-+---->   |  30 m |         | CNode |
    | CLink3 |        | CNode-+---->    |  ...  |
    |  ...   |        ---------         ---------
    ----------
    Avec cela tu auras déjà fait des premiers pas en conception tout à fait probants.


    Après, ce n'est pas la "plus belle" façon de faire un graphe.

    Notament, cela pose un certain nombre de problèmes d'intégrité (ne serait ce que parce que les liens ne vont que dans un sens et que tu peux te retrouver avec des contradictions interne, comme ceci :

    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
     
     ________
    |  Nimes |       _______
    |--------|      | CLink |
    | CLink1-+----> |-------|      ________
     --------       | 32 km |     |  Ales  |
          ^         | CNode-+---->|--------|
          |          -------      |        |
          |                   ----+-CLink1 |
          |     _______       |    --------
          |    | CLink | <----
          |    |-------|
          |    | 28 km |
          -----+-CNode |
                -------
    ou plus simplement ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     ________
    |  Nimes |       _______
    |--------|      | CLink |
    | CLink1-+----> |-------|      ________
     --------       | 32 km |     |  Ales  |
                    | CNode-+---->|--------|
                     -------      |        |
                                   --------
    En fait dans un vrai bon modèle, tu te débrouille pour qu'il ne soit pas possible de créer des contradictions, et tu n'as pas à surveiller en permanence que ça se passe bien.

    Tu peux dors-et-déjà réfléchir à ces problèmes, où simplement coder de la façon dont tu le conçoit. Dans les deux cas, c'est un pas en avant.

    Bonen chance

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Points : 34
    Points
    34
    Par défaut
    merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2011, 18h58
  2. un tableau avec plusieurs types
    Par boumacmilan dans le forum Langage
    Réponses: 6
    Dernier message: 31/03/2010, 07h00
  3. Problème avec les types de variable
    Par binhjuventus dans le forum C++Builder
    Réponses: 2
    Dernier message: 13/07/2006, 12h30

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