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 :

Effacer un élément d'un tableau


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut Effacer un élément d'un tableau
    Bonjour à tous ,

    Je souhaiterai un renseignement concernant la méthode pour la suppression d'un élément tableau et à n'importe quel position , je sais qui faut qui devait suivre doit prendre sa position / le remplacer ainsi que les élements suivants de la meme maniere mais je ne vois pas trop comment m'y prendre au niveau du code quelqu'un pourrait-il m'aider svp.

    J'ai pu lire qu'on pouvait pas supprimer un élément d'un array mais seulement pour un arraylist donc mon soucis c'est que j'ai un tableau nom et enfaite lorsque l'utilisateur saisie si le nom existe dans le tableau je souhaiterai donc l'effacer pour cela on m'a dit qui faut que je remplace cette donnée par la donnée suivante mais du coup je me retrouverai avec un doublon , il faudrait donc pouvoir réduire le tableau si il est impossible de supprimer . J'aimerai quelqu'un m'éclaircisse sur mon probléme car je n'y arrive pas

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    plutot que de travailler avec un tableau, il faut travailler avec une List<>

    Ainsi, tu peux trouver une élément dans ta liste qui correspond à tes critères de recherche et le supprimer.

    Une liste peut être transformée en tableau pour des besoins d'utilisation.

    Mais la manipulation des données se fera sur la liste elle même.

    L'intérêt d'un tableau est principalement pour des tableaux de taille fixe ou bien pour la gestion d'image par exemple (on la representation de l'image correspond à un tableau à 2 dimensions).

    Si tu as des choses à dimension variable (tableau avec des éléments à ajouter / supprimer), utilise une liste ou bien un dictionnare (Dictionary en .Net).
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    D'accord , merci pour ces infos justement je n'aie pas encore vu cela en cours mais on va commencer bientot donc je devais faire plein bidouille au niveau du tableau pour arriver à un résultat que je ne trouve pas trés évident à faire puisque aprés quelques recherches j'ai vu qu'il était conseillé d'utiliser une List et ce qui rendait la manipulation plus pratique car là je n'aie pas réussi à faire grand chose avec la méthode qu'il proposait.

    Merci pour ta réponse .

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 166
    Points : 7 418
    Points
    7 418
    Billets dans le blog
    1
    Par défaut
    Pour "supprimer" une ligne dans un tableau, il y a tout un tas de solutions.

    La première, c'est de décaler à l'index - 1 toutes les lignes qui sont stockées après l'index à supprimer. La dernière ligne du tableau est alors à écarter des traitements ultérieurs.
    => C'est la méthode la plus performante, mais aussi la plus dangereuse, car si tu te base sur myArray.Length pour connaître le nombre de lignes, tu risques de lires des données qui ne sont pas dans ton tableau (d'un point de vue logique).

    La seconde, la plus courante, c'est la recopie. Tu crée un array de dimension n - 1, et tu recopie dedans toutes les lignes de l'autre tableau, sauf celle à supprimer. Tu travailles ensuite sur le nouveau array. Très adaptée pour tes tableaux de petite taille, c'est une catastrophe niveau performances pour les tableaux de grande taille (on double la consommation mémoire, entre autres).

    Une autre, basée sur la seconde, c'est de créer une List<T> bassée sur ton array T[] (exemple: List<int> lst = new List<int>(myArray) ) puis supprimer de la liste la ligne non désirée, et transformer dans l'autre sens la List<T> en array T[] (en prenant soit d'écraser le array initial). C'est plus court à propgramer, mais certainement aussi encore plus consommateur.

    Une autre solution, basée sur la première, c'est de créer une class qui contient : ton array de données, plus une List<int> contenant les index des lignes supprimées. Tu crées alors des accesseurs et itérateurs sur ta classe qui permettent de parcourir ton array sans lire les lignes marquées comme supprimées. (c'est certainement la méthode la plus complexe, mais aussi la plus performante).

    Je pense qu'on peut en énumérer encore une bonne vingtaine sans forcer, toutes aussi biscornues qu'originales
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    je ne sais pas si j´ai compris ton probleme, mais peu etre le code suivant peu t aider.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            string[] lines = File.ReadAllLines(@"D:\tonfichier.txt");
                List<string> newlines = new List<string>();
                for (int i = 0; i < lines.Length; i++)
                {
                    if (true)//Biensur ici tu donnes la condition pour supprimer
                        newlines.Add(lines[i]);
                }
                File.WriteAllLines(@"D:\tonfichier.txt", newlines);
    cordialement

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Pour "supprimer" une ligne dans un tableau, il y a tout un tas de solutions.

    La première, c'est de décaler à l'index - 1 toutes les lignes qui sont stockées après l'index à supprimer. La dernière ligne du tableau est alors à écarter des traitements ultérieurs.
    => C'est la méthode la plus performante, mais aussi la plus dangereuse, car si tu te base sur myArray.Length pour connaître le nombre de lignes, tu risques de lires des données qui ne sont pas dans ton tableau (d'un point de vue logique).

    La seconde, la plus courante, c'est la recopie. Tu crée un array de dimension n - 1, et tu recopie dedans toutes les lignes de l'autre tableau, sauf celle à supprimer. Tu travailles ensuite sur le nouveau array. Très adaptée pour tes tableaux de petite taille, c'est une catastrophe niveau performances pour les tableaux de grande taille (on double la consommation mémoire, entre autres).

    Une autre, basée sur la seconde, c'est de créer une List<T> bassée sur ton array T[] (exemple: List<int> lst = new List<int>(myArray) ) puis supprimer de la liste la ligne non désirée, et transformer dans l'autre sens la List<T> en array T[] (en prenant soit d'écraser le array initial). C'est plus court à propgramer, mais certainement aussi encore plus consommateur.

    Une autre solution, basée sur la première, c'est de créer une class qui contient : ton array de données, plus une List<int> contenant les index des lignes supprimées. Tu crées alors des accesseurs et itérateurs sur ta classe qui permettent de parcourir ton array sans lire les lignes marquées comme supprimées. (c'est certainement la méthode la plus complexe, mais aussi la plus performante).

    Je pense qu'on peut en énumérer encore une bonne vingtaine sans forcer, toutes aussi biscornues qu'originales
    Effectivement , par la suite nous avons vu cette méthode avec le décalage de l'index et comme tu l'avais nous avons abordé l'utilisation d'une List qui rend bien des services !

    Merci à vous deux pour vos réponses

Discussions similaires

  1. Effacer un élément d'un tableau
    Par astran dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 21/01/2013, 10h41
  2. Recherche élément médian dans tableau non trié
    Par chicorico dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2009, 17h39
  3. Effacer un élément d'un tableau (connaissant sa valeur)
    Par skaraa dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/11/2007, 16h06
  4. Supprimer un élément d'un tableau
    Par CaptainChoc dans le forum Langage
    Réponses: 15
    Dernier message: 23/12/2002, 23h14
  5. Réponses: 3
    Dernier message: 16/12/2002, 16h12

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