Consultation

Bonjour,
je connait que la création des tableau soit unidimensionnels ou multidimensionnels ne se fait que lorsque on connait d'avance la taille du tableau (int tab [6];); alors est ce qu' il existe une conception de gestion dynamique pour les tableaux càd créer un tableau au fur à mesuer dans la manipulation du programme qu'on ajoute un élément à chaque fois
merci d'avance
Configuration: Windows XP
Firefox 2.0.0.20

5 réponses

  1. Contributeur
    il y a 2 choses: soit tu crées le tableau en brute dans le code : int tab[6],
    soti tu crées le tableau en dynamique dans le code tableau = new int [variable] ...

    mais ce stableau ne sont pas redimentionnables...
    pour avoir un truc redimentionnable, je t'oriente vers l'apprentissage des listes chainées
    1. bonjour
      merci de me rendez compte, concernant votre réponse, qu'est ce cà vous dire les tableaux ne sont pas redimmentionnable, est ce que vous pouvez me donner un sur vol sur les liste chainées
      merrrrrci
      1. Hello

        rappel: il existe des langages où les tableaux sont redimensionnables... mais ce sont des langages "peu performants"

        La liste chainée est en fait un enchainement d'éléments, chaque élément étant porteur de donnée(s) et de l'adresse de l'élément suivant, éventuellement on peut y rajouter l'adresse du premier élément et/ou l'adresse de l'élément précédent

        ex: tu voulais un tableau où chaque élément contient
        - code
        - libellé
        - valeur
        - date

        tu devras déclarer pour ta liste chainée
        - code
        - libellé
        - valeur
        - date
        - adresse de l'élément suivant

        quand tu voudras ajouter {400002 , "Quelque chose" , 2851,32 , 23-OCT-09}
        tu devras ajouter {400002 , "Quelque chose" , 2851,32 , 23-OCT-09, null}
        et dans le null de l'élément précédent tu devras mettre l'adresse de {400002 , etc...}

        1. parcourir la liste chainée jusqu'à ce que adresse_element_suivant contient null
        2. demander suffisament d'octets au système pour stocker un élément
        3. le système te renvoie un pointeur
        4. stocker ce pointeur dans adresse_element_suivant qui contient null
        5. stocker les différentes valeurs dans l'élément pointé par adresse_element_suivant

        comme je sais pas écrire du C, je te propose un "truc" en langage plus ou moins naturel

        type maStruct(
        code entier
        libellé alphanum
        valeur flottant
        date date
        adresse pointeur vers maStruct
        )

        ajouter_element(aCode, aLib, aVal, aDate, aListe)
        si aListe ne contient pas null alors ajouter_element(aCode, alib, aVal, aDate, adresse indiqué par aListe)
        sinon
        allouer suffisament de mémoire pour contenir un maStruct
        stocker l'adresse de ce bloc mémoire dans aListe
        stocker aCode dans code indiqué par aListe
        stocker aLib dans libellé indiqué par aListe
        stocker aVal dans valeur indiqué par aListe
        stocker aDate dans date indiqué par aListe
        fin si
        nb: aListe doit être passé par référence ! sinon, l'adresse du bloc mémoire n'est pas conservé et la liste reste perpétuellement vide

        chercher_element(aCode, aListe) renvoie un pointeur vers maStruct
        si aListe contient null alors renvoyer aListe
        sinon si aCode est égal à code indiqué par aListe alors renvoyer aListe
        sinon renvoyer chercher_element(aCode, adresse indiqué par aListe)

        Voilà pour la mise en jambes... bien évidemment, grâce à google tu aurais pu trouver des cours et exemples mieux construits, plus pédagogues, mais ça, c'est une autre histoire ;-)

        ps: si tu visualises mal, n'hésites pas à faire qqes croquis sur une feuille
        1. Bonjour,

          En anglais, peut être?

          http://richardbowles.tripod.com/cpp/linklist/linklist.htm

          bye.