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

Algorithmes et structures de données Discussion :

tableau de tableaux


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut tableau de tableaux
    Bonjour,
    Je dois considérer un objet de type Tableau ( c'est un simple tableau!) dont chaque emplacement contient un tableau.
    Est ce que l'écriture suivante choquerait en algo ?

    Pour désigner l'emplacement 4 du tableau 2 (tableau 2 se trouve à son tour à l'emplacement 3 du tableau 1), on écrit :

    tableau1[3].tableau2[4]

    Merci à vous

  2. #2
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    J'ai du mal à comprendre ta représentation.

    pour un tableau à deux dimensions je me le représente comme cela :

    Tab[5][5]

    [[],[],[],[X],[]],[[],[],[],[],[]],[[],[],[],[],[X]],[[],[],[],[],[]],[[],[],[],[],[]]

    La crois noir représente l'emplacement 4 du tableau 2
    X = Tab[4][2]

    La croix rouge représente l'emplacement 3 du tableau 0
    X = Tab[0][3]

  3. #3
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Je me suis mal exprimé!
    tableau1 et tableau2 sont considérés comme deux objets.
    tableau2 est considéré comme un attribut de tableau1.
    L'écriture "objet" pourrait donc être tableau1.tableau2 pour faire référence à tableau2. Pour une question de clarté et comme on manipule des tableaux, on fait intervenir les crochets pour désigner les emplacements, d'où l'écriture :
    Pour désigner l'emplacement 4 du tableau 2 (tableau 2 se trouve à son tour à l'emplacement 3 du tableau 1), on écrit :

    tableau1[3].tableau2[4]

    D'autre part :

    pour un tableau à deux dimensions je me le représente comme cela :

    Tab[5][5]

    [[],[],[],[X],[]],[[],[],[],[],[]],[[],[],[],[],[X]],[[],[],[],[],[]],[[],[],[],[],[]]

    La crois noir représente l'emplacement 4 du tableau 2
    X = Tab[4][2]

    La croix rouge représente l'emplacement 3 du tableau 0
    X = Tab[0][3]
    Pour moi, il ne s'agit pas du tout de tableau à 2 dimensions mais plutôt une seule dimension.

    Merci pour ta réponse.

  4. #4
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    D'accord je comprends mieux.

    Effectivement c'est pas commun de faire ça en objet..

  5. #5
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Justement, un pseudo code doit être le plus clair possible; ET c'est mon problème! l'écriture que j'ai émise ne me plait pas et me semble ambiguë malgré qu'elle soit correcte. Je cherche donc un avis.
    Bien à toi

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    moi c'est le point "." qui me choque..

    ça c'est dérivé des langages Objet et n'a pas sa place en algo pseudo-code


    Ensuite, les indications d'indices (sauf si elles sont génériques) sont aussi sans objet en algo pseudo-code..

    moi j'écrirais

    tableau2(tableau1(j))(i)

    ou

    tableau2(i,tableau1(j))

    ou plus simplement :

    tableau2 = tableau1(j)

    val = tableau2(i)

  7. #7
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    moi c'est le point "." qui me choque..
    C'est curieux parce que la présence du point dans un pseudo code pour des applications "objet" est bien courant.

    ça c'est dérivé des langages Objet et n'a pas sa place en algo pseudo-code
    Pourquoi? L'objet peut bénéficier de pseudo code!!

    moi j'écrirais

    tableau2(tableau1(j))(i)

    ou

    tableau2(i,tableau1(j))
    Pourquoi pas; ça m'a l'air pas mal.

    ou plus simplement :

    tableau2 = tableau1(j)

    val = tableau2(i)
    Là je ne suis plus d'accord; cela perd son sens car
    val = tableau2(i)
    n'a pas d'information sur le tableau1.

  8. #8
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    En java ça donnerais à peux près ça :

    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
    ArrayList<ArrayList<String>> first = new ArrayList<ArrayList<String>>();
     
    ArrayList<String> sec = new ArrayList<String>();
     
    sec.add("Aa");
    sec.add("Ab");
    sec.add("Ac");
     
    first.add(sec);
     
    ArrayList<String> third = new ArrayList<String>();
     
    third.add("Ba");
    third.add("Bb");
    third.add("Bc");
     
    first.add(third);
     
     
    first.get(0).get(2) --> "Ab"

  9. #9
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Oui, merci.
    Mais, comment pourrait on faire en pseudo code comme je l'ai précisé dans le premier message.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par wafiwafi Voir le message
    C'est curieux parce que la présence du point dans un pseudo code pour des applications "objet" est bien courant.
    C'est antinomique d'un pseudo-code, qui ne doit pas dépendre d'un langage (ou d'un paradigme).. à mon sens..



    Citation Envoyé par wafiwafi Voir le message
    Là je ne suis plus d'accord; cela perd son sens car
    n'a pas d'information sur le tableau1.
    Ben vu que ce n'est pas un tableau à 2 dimensions, mais un tableau de tableau, le tableau 1 n'a aucune information sur le ou les tableaux 2..

  11. #11
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    C'est antinomique d'un pseudo-code, qui ne doit pas dépendre d'un langage (ou d'un paradigme).. à mon sens..
    Ce n'est pas parce que java utilise le point, pour désigner un attribut ou une méthode, que c++ ne doit pas le faire ou l'inverse!
    Je suis d'accord qu'un pseudo code ne doit pas dépendre d'un langage...; néanmoins, il doit être surtout compréhensible et la notation objet.attribut ou objet.méthode() l'est, du moment où on précise sa sémantique. Je ne vois aucune raison de nous l'interdire!!

    Mais je comprend ton point de vue; simplement, il ne faut pas tomber dans le piège de l'extrême, je pense.

    Je renvoie toujours à ma première question, qui jusqu'au là, n'a pas eu de réponse définitive.

    Merci à toi

  12. #12
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 387
    Points : 3 535
    Points
    3 535
    Billets dans le blog
    1
    Par défaut
    Le pseudo-code n'a pas de règles.. donc difficile de s'arrête à une seule solution, à priori il n'y en à pas, en tout cas pas une qui soit plus vrai que les autres.

    Pour moi ça serait :

    Objet A[Objet[]]
    Objet B = A[2][4]
    Moi ça me parle, mais ce n'est que moi

  13. #13
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Le pseudo-code n'a pas de règles.. donc difficile de s'arrêter à une seule solution, à priori il n'y en a pas, en tout cas pas une qui soit plus vrai que les autres.
    Oui, je suis d'accord.
    Il y a une certaine liberté mais la clarté s'impose.

  14. #14
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Pour désigner l'emplacement 4 du tableau 2 (tableau 2 se trouve à son tour à l'emplacement 3 du tableau 1), on écrit :

    tableau1[3].tableau2[4]
    J'en déduis qu'il faudrait mieux éviter cette écriture en pseudo code ( avec un raisonnement objet).

    Merci à vous

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    de quels "objets" parle-t-on ?


    Parce que quand même, un tableau de tableaux sans que ce soit un tableau à 2 dims est relativement rare..

    Là ce qui bloque un peu c'est que dans un tableau de tableaux "pur" il n'y a pas d'information dans le premier tableau sur ce que contient (et donc les indices ou les dimensions) du second tableau...

    D'où mes écritures plus haut...

    Mais qui je trouve sont un peu lourdes (en tant que pseudo-code)...

  16. #16
    Membre averti
    Avatar de wafiwafi
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 500
    Points : 328
    Points
    328
    Par défaut
    Oui, je vois ce que tu veux dire!
    J'ai commis une petite erreur dans mon raisonnement; je complète mon algorithme et je reviens prendre votre précieux avis.
    Merci à vous tous

  17. #17
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    un exemple très evident de tableau de tableau, les systèmes de fichiers.

    une succession de listes ou tableaux, une arborescence.

  18. #18
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par --1-- Voir le message
    un exemple très evident de tableau de tableau, les systèmes de fichiers.

    une succession de listes ou tableaux, une arborescence.
    non, pas vraiment, en tous cas pas de la manière dont je le comprend.. car pour une arborescence, d'une part chaque morceau est du même type, et d'autre part il y a une information sur la suite, puisque c'est le même système qui se répète (un peu comme une fractale)

    Déjà un système de fichiers contient 2 types au minimum, des répertoires et des fichiers simples, et les seuls embranchements peuvent être faits sur les répertoires.

    Une succession de listes c'est des éléments du même type, une succession de tableaux est alors soit un tableau à 2 dimensions soit ce dont il parle.



    Un tableau de tableau pur, ça peut être un tableau de chaines de caractères de longueurs différentes, ou par exemple un tableau d'options ou de valeurs de types différents.. Le type, la longueur de la chaine, n'est connue et n'a de sens que pour l'élément considéré, mais n'en a plus pour le suivant... Donc la rérérence sur le tableau contenant les débuts de tableaux ne donne aucune référence sur le contenu ou comment atteindre un emplacement du second, et réciproquement..

    Par exemple, je verrais bien un tableau de tableaux comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab { int [10], double[50], char[4], string[25] }
    Je ne vois pas comment référencer directement et de manière générique le 2ième élément du 3ième tableau, ou le 3ième élément du 2ième tableau, sans une autre information...


    Un tableau de tableaux, comme je l'ai indiqué plus haut, me semblerait correctement décrit par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau2(tableau1(j))(i)
    mais j et i ne sont pas liés et n'ont aucun moyen d'être liés...
    Et d'autre part cela lie tableau2 à tableau1 mais pas tableau1 à tableau2..


    Mais, par rapport à la nuance faite par le PO dans son premier post et dans

    Là je ne suis plus d'accord; cela perd son sens car

    val = tableau2(i)
    n'a pas d'information sur le tableau1.

    J'en déduis que vraisemblablement il voudrait parler d'un tableau à 2 dimensions, car c'est le seul moyen de garantir que tableau2(i) est lié à tableau1... ou d'un héritage..

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

Discussions similaires

  1. [Tableaux] Tableau de tableaux malgré moi ?
    Par php_de_travers dans le forum Langage
    Réponses: 7
    Dernier message: 29/05/2007, 12h30
  2. Réponses: 9
    Dernier message: 26/04/2007, 15h17
  3. [VBA][00]Tableau de tableaux
    Par Mafate dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/04/2007, 21h17
  4. Tableau de tableaux
    Par stokastik dans le forum C
    Réponses: 8
    Dernier message: 15/08/2006, 10h45
  5. VB6: Comment faire un tableau de tableaux ?
    Par AsmCode dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 10/11/2005, 22h57

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