Consultation
nada
-
calibos -
calibos -
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
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
5 réponses
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question