bonjour,
comment faire pour supprimer la derniere case d'un tableau??et le nombre d'élément du tableau sera modifié???
bonjour,
comment faire pour supprimer la derniere case d'un tableau??et le nombre d'élément du tableau sera modifié???
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Ca dépend de comment tu as créé ton tableau..
Sans source, c'ets aps évident de répondre..
Une solution est la recopie, une autre est de marquer la cellule comme "vide", ou de décaller toutes les valeurs qui suivent la case que tu as vidé et de marquer la fin du tableau par exemple avcec un \0
Mais je le répète.. sans code...
je ne peux pas décaller puisque c'est la dernière case
Eh ben tu passes ton marqueur de fin de tableau sur cette case...
@Franck.H: ça dépend quand même de la taille de son tableau et de la fréquence de suppression.
HS: Ah lala Obernai.. J'y ai habité presque au pied de la croix ^^
@marooh: il représente quoi ton tableau? Il est statique? Dynamique? Il y a beaucoup de suppressions?
mon tableau est statique
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
en fait c'est un tableau de réels à remplir par l'utilisateur et dés qu'il saisi zéro,on arrete la saisie et le zéro ne sera pas pris comme element du tableau.voilaa
Bon..
Le plus simple vu que tu as un tableau statique, il ne peut pas changer de taille, c'est de marque la dernière case du tableau par un symbole (0, pourquoi pas, si tu es sûr qu'aucune case précédent ne peut valoir 0). Quand tu supprime une case, tu décalles tes cases vers la gauche et tu mets ton zero à la nouvelle fin (exactement comme une chaine de caractère avec le \0).
Une autre solution, plus simple et plus légère, est de marquer les éléments supprimés en les remplaçant par une valeur particulière (0 si tu es sûr et certains qu'il ne sera jamais utilisé, ou encore -1 si tes réèles sont tous positifs).
Ensuite, quand tu boucles sur le tableau, tu ne prend en compte que les valeurs différentes de 0 ou de -1...
Sinon tu copies ton tableau dans un nouveau qui fait une case de moins en longueur (long, inutile..)
Attention par contre que ton utilisateur ne rentre pas plus de nombre que ce que ton tableau peut contenir (risque de buffer overflow et vulnérabilité pour le système).
Si tu ne connais pas la taille maximum du tableau il te faut un tableau dynamique, y'a pas à chercher plus loin
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
si je déclare dés le début un tableau avec un grand nombre de cases mais je ne les remplis pas toutes,les autres cases ne s'afficheront pas??
Le problème c'est que tu vas réserver énormément de mémoire par rapport à ce que tu as besoin... Le dépassement peut quand même se faire si tu ne fait pas très attention...
Je ne vois pas l'intérêt de faire une allocation statique ici..
ce n'est pas un choix mais une obligation c'est ce que demande l'énoncé
Moi personnellement c'est le genre de cas où j'utiliserais soit un tableau dynamique soit dans d'autres cas un peu plus particuliers (suivant les manip à faire sur le tableau), une liste chaînée
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Reste sur ta discussion précédente, s'il-te-plaît. Le sujet est le même. Tu as déjà obtenu une réponse, même si elle ne satisfait pas. Ce n'est pas en tournant le problème autrement que tu obtiendras ce que tu veux entendre.
Le C n'est pas un équivalent du Perl, du PHP ou d'autres langages, dont tu proviens peut-être. En C, un tableau n'est qu'une zone de mémoire linéaire que l'on parcourt en suivant un index. Ce n'est pas un objet particulier, structuré, et dont la taille est enregistrée quelque part.
Lorsque tu déclares un tableau dans ton code source, le compilateur réserve de la place en calculant les adresses des autres variables en conséquence. C'est pour ça qu'un tableau en C est purement statique, à l'exception des VLAs. Et même dans ce cas précis, la taille du tableau est définie à l'exécution, mais il n'est pas redimensionnable pour autant.
Ça veut dire qu'en C, l'exploitation d'un tableau et la réservation de la mémoire qu'il occupe sont deux choses distinctes.
Pour faire ce que tu veux faire, il faut donc allouer de la mémoire, la réallouer si nécessaire, et la libérer à la fin, et ceci avec malloc(), realloc(), et free(). « realloc() » permet de réallouer la mémoire, c'est-à-dire modifier sa taille sans en perdre le contenu. Pour cela, il est possible qu'elle alloue un autre segment complètement distinct et qu'elle y recopie le contenu du premier avant de le libérer, mais ça, tu n'as pas à t'en soucier.
Les deux premières fonctions te renvoient un pointeur qui t'indique où se trouve la mémoire réservée. Tu peux ensuite exploiter ce pointeur comme un tableau avec « [ ] ».
????????Bon bah du coup ça change rien, tu mets un marqueur de fin de chaine ou de case vide et rulez...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager