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 :

Problème d'usage d'une liste de matrice


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 29
    Points
    29
    Par défaut Problème d'usage d'une liste de matrice
    Bonjour
    je suis débutante en c#,
    j'ai une classe particule qui dispose de deux attributs position et vitesse qui sont des liste de matrice et plusieurs autre
    dans classe programme
    j'ai à un tableau tabPbest dont les élements sont liste de particule :
    est-ce-que ce type générer des problèmes
    lors de l'exécution du programme principale, j'ai une exception de NullRéférence:
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    class Program
        {
            static void Main(string[] args)
            {
                int taillePop = 5;
                particule[]Swarm = new particule[taillePop]; 
                List<particule>[] tabPbest= new List< particule>[taillePop];
                List<particule> pbest = new List<particule>();
                List<particule> afficher = new List<particule>();
                int[,] vit = new int[2, 2];
                int[,] pos = new int[2, 2];
                int[,] vit1 = new int[2, 2];
                int[,] pos1 = new int[2, 2];
                List<int[,]> l1 = new List<int[,]>();
                List<int[,]> l2 = new List<int[,]>();
     
     
     
                // INITIALISATION DE LA SWARW
                for (int i = 0; i < 2; i++)
                    for (int j = 0; j < 2; j++)
                    {
                        vit[i, j] = 1;
                        pos[i, j] = 0;
                    }
                l1.Add(vit);
                l2.Add(pos);
                for (int i = 0; i < 2; i++)
                    for (int j = 0; j < 2; j++)
                    {
                        vit1[i, j] = 1;
                        pos1[i, j] = 0;
                    }
                l1.Add(vit);
                l2.Add(pos);
                // affichage de la population initiale
                for (int i = 0; i < taillePop; i++)
                    Swarm[i] = new particule(l1, l2);
                for (int i = 0; i < Swarm.Length; i++)
                {
                    Console.WriteLine("la solution n°{0}", i);
     
                    Swarm[i].indentifier();
     
                }
                // Intialisation de Pbest
                for (int i = 0; i < Swarm.Length; i++)
                {
                    //tPbest[i] = Swarm[i].GetPosition(); // initialement le pbest de chaaque particule estla position  de la particule 
                    pbest.Add(Swarm[i]);
                    tabPbest[i] = pbest;
                    pbest.Remove(Swarm[i]);
     
                }
     
     
                for (int i = 0; i < tabPbest.Length; i++)
                {
                    afficher = tabPbest[i];
                    Console.WriteLine("le pbest de la soltion {0}", i);
                    for (int j = 0; j < afficher.Count ; j++)
     
                       afficher[j].indentifier();
     
                }
    il ne m'affiche pas la résultat
    et je ne sais pas la cause???

  2. #2
    Membre habitué Avatar de bibbi
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 113
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Quelle est la ligne qui lève l'exception?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 59
    Points
    59
    Par défaut
    Bonjour.

    As tu essayé de debugger ton application en faisant du pas à pas pour voir à quel endroit l'exception était générée.

    Sinon lorsque tu instancie un objet particule, as tu vérifier que le code présent dans ton constructeur n'est pas susceptible de générer une NullRéférenceException tout comme lorsque tu appelle la méthode identifier() de tes objets.

    Cordialement.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    Bonjour.

    As tu essayé de debugger ton application en faisant du pas à pas pour voir à quel endroit l'exception était générée.

    Sinon lorsque tu instancie un objet particule, as tu vérifier que le code présent dans ton constructeur n'est pas susceptible de générer une NullRéférenceException tout comme lorsque tu appelle la méthode identifier() de tes objets.

    Cordialement.
    je ne sais pas comment faire???
    mais pour le constructeur et la methode identifier () , le tableau Swarm dont les élément sont des particules, le programme affiche le tableau
    mais pour les tableau TabPbest, dont les élemnt sont des listes de matrices, il n'affiches pas la résultat.
    bonjour,

    Quelle est la ligne qui lève l'exception?
    il génére une faute de nullRéférence au niveau de la ligne TabPbest[i].count

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    Console.WriteLine("le pbest de la soltion {0}", i);
                    for (int j = 0; j < tabPbest[i].Count ; j++)
     
                       afficher[j].indentifier();

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    bonjour,
    je veux savoir si ce code peut retourner une nullRéférence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (int i = 0; i < Swarm.Length; i++)
                {
                    //tPbest[i] = Swarm[i].GetPosition(); // initialement le pbest de chaaque particule estla position  de la particule 
                    pbest.Add(Swarm[i]);
                    tabPbest[i] = pbest;
                    pbest.Remove(Swarm[i]);
     
                }
    en effet, j'ai un tableau swarm de particule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    particule[]swarm=new particule[taillepoulationl
    et j'ai à remplir un autre tableau TabPbest dont les élementssont des listes de particule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<particule>[] tabPbest= new List< particule>[taillePop];
    j'ai utilisé le code en haut pour remplir le tableau TabPbest : chaque tabPbest[i] qui est une liste, doit prendre la particule swarm[i]
    est_ce que la logique de code est juste????

  6. #6
    Membre habitué Avatar de bibbi
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 113
    Points : 137
    Points
    137
    Par défaut
    Pour la référence null de ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Console.WriteLine("le pbest de la soltion {0}", i);
                    for (int j = 0; j < tabPbest[i].Count ; j++)
     
                       afficher[j].indentifier();
    Je dirais que la liste de particule à l'index i de ton tableau n'a pas été initialisée. Ce qui est fort possible étant donné que tu construits ton tableau avec une taille fixe.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    a mon avis, la liste de chaque élement de tableau à été initialisé par le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (int i = 0; i < Swarm.Length; i++)
                {
                    //tPbest[i] = Swarm[i].GetPosition(); // initialement le pbest de chaaque particule estla position  de la particule 
                    pbest.Add(Swarm[i]);
                    tabPbest[i] = pbest;
                    pbest.Remove(Swarm[i]);
     
                }
    est_ce que c'est juste????

  8. #8
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    En reprenant le code tel quel (premier post) et en créant une classe particule bidon, juste pour que ça puisse compiler et s'exécuter, je n'ai aucune erreur.

    Classe particule utilisée juste pour tester.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class particule
    {
        public void indentifier()
        {
        }
     
        public particule(List<int[,]> l1, List<int[,]> l2)
        {
        }
    }
    Donc tu dois faire quelque chose dans la classe particule qui produit un effet de bord.
    Pas de questions techniques par MP

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 62
    Points : 29
    Points
    29
    Par défaut
    désolé
    mais j'ai pas bien compris
    Donc tu dois faire quelque chose dans la classe particule qui produit un effet de bord

  10. #10
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Dans la classe particule il doit y avoir quelque chose qui est la cause du problème que tu rencontres. Ou alors le code posté n'est pas le bon. Car je n'ai pas d'erreur de mon côté.
    Pas de questions techniques par MP

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

Discussions similaires

  1. Problème d'affichage d'une liste déroulante
    Par licorne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 05/09/2006, 13h07
  2. [CSS] Problème d'espaces dans une liste
    Par sylsau dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 03/08/2006, 13h46
  3. Problème sur évènement d'une liste déroulante
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 05/05/2006, 08h03
  4. Réponses: 17
    Dernier message: 03/05/2006, 14h01
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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