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 :

inserer des valeurs user dans un tableau [Débutant]


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut inserer des valeurs user dans un tableau
    Bonjour à tous !
    Je débute dans le développement et j'ai voulu me lancer dans l'écriture d'un code permettant de jouer au loto.
    Seulement voila, quand l'utilisateur entre les nombres qu'il souhaite jouer, je vérifie qu'il s'agit bien de valeurs numérique et par la suite je veux les entrer dans un tableau de valeur. Et le tableau ne prend pas les valeurs, sans que je n'arrive à comprendre pourquoi ...
    Je vous met ci dessous une partie du code et vous remercie par avance pour vos réponses !


    Code csharp : 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
    static void NouvellePartie(int[] tabUser, string valeurUser, int valeurNumeric, bool Numeric)
            {
                Console.WriteLine("Entrez les nombres que vous souhaitez mettre en jeu : ");
                Console.WriteLine("");
     
                for (valeurNumeric = 0; valeurNumeric < tabUser.Length; valeurNumeric++)
                {
                    VerifValeurUser(valeurNumeric, Numeric, tabUser, valeurUser);
                    tabUser[valeurNumeric] = valeurNumeric;
                }
     
                Console.WriteLine(" ");
                Console.Write("Vos nombres sont les : ");
     
                for (valeurNumeric = 0; valeurNumeric < tabUser.Length; valeurNumeric++)
                {
                    Console.Write( "{1}", valeurNumeric, tabUser[valeurNumeric]);
                }
     
     
     
      static int VerifValeurUser(int valeurNumeric, bool Numeric, int[] tabUser, string valeurUser)
            {
                valeurUser = Console.ReadLine();
                Numeric = int.TryParse(valeurUser, out valeurNumeric);
     
                while (Numeric == false)
                {
                    Console.WriteLine("Il ne s'agit pas d'un nombre, veuillez réessayer");
                    valeurUser = Console.ReadLine();
                    Numeric = int.TryParse(valeurUser, out valeurNumeric);
                }
                return valeurNumeric;

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Je crois deviner le problème, de toute façon si ce n'est pas ça, c'est un problème du même tonneau.

    Ce problème est que tu attends que ta variable valeurNumeric soit traitée comme une référence, ce qui n'est pas le cas. Cela marcherait pour un objet d'une classe, mais la il s'agit d'un type simple, une structure.

    Du coup quand tu modifies sa valeur dans la seconde méthode, ce n'est déjà plus la même variable. Quoi que tu fasses dans cette méthode, la variable originelle dans NouvellePartie ne sera pas affectée.

    Mais tu as déjà fait quasi la totalité du travail car tu retournes déjà sa valeur. Il te suffit simplement de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeurNumeric = VerifValeurUser(valeurNumeric, Numeric, tabUser, valeurUser);
    tabUser[valeurNumeric] = valeurNumeric;
    De cette manière tu récupères le résultat et tu peux rafraîchir la variable originelle.

    Voilà, il faut faire attention sur cette différence qui est très importante (petit cours sur le sujet si jamais ça t'intéresse => Différence valeur / référence) et ça devrait aller.

    Pour finir, tu as trop de paramètres inutiles dans tes méthodes et c'est sûrement ce qui est a l'original de ta confusion. Attention a s'en tenir qu'au strict nécessaire.

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Cela n'a rien à voir avec un passage par valeur ou référence dans la mesure où ta méthode n'a pas besoin de paramètres.
    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
    static void NouvellePartie(int[] tabUser, string valeurUser, int valeurNumeric, bool Numeric)
    {
        Console.WriteLine("Entrez les nombres que vous souhaitez mettre en jeu : ");
        Console.WriteLine("");
     
        for (valeurNumeric = 0; valeurNumeric < tabUser.Length; valeurNumeric++)
        {
            tabUser[valeurNumeric] = VerifValeurUser();
        }
     
        Console.WriteLine(" ");
        Console.Write("Vos nombres sont les : ");
     
        for (valeurNumeric = 0; valeurNumeric < tabUser.Length; valeurNumeric++)
        {
            Console.Write("{1}", valeurNumeric, tabUser[valeurNumeric]);
        }
    }
     
     
     
    static int VerifValeurUser()
    {
        int valeurNumeric;
        string valeurUser = Console.ReadLine();
        bool Numeric = int.TryParse(valeurUser, out valeurNumeric);
     
        while (Numeric == false)
        {
            Console.WriteLine("Il ne s'agit pas d'un nombre, veuillez réessayer");
            valeurUser = Console.ReadLine();
            Numeric = int.TryParse(valeurUser, out valeurNumeric);
        }
     
        return valeurNumeric;
    }
    Ce code peut encore être amélioré mais je ne me suis volontairement pas éloigné de ce que tu as écrit pour que tu cherches les améliorations par toi même.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous !
    Merci pour vos réponses rapides et constructives !
    La 2ème réponse était effectivement la bonne, cependant je vous remercie de m'avoir fait mettre le doigt sur les différences entre valeur et référence.
    Pour l'amélioration du code et le fait que j'ai trop de paramètres inutiles dans mes méthodes, je vais m'y pencher ! Merci encore

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/03/2013, 13h40
  2. Réponses: 7
    Dernier message: 01/01/2013, 18h03
  3. Réponses: 3
    Dernier message: 26/10/2010, 22h14
  4. Réponses: 1
    Dernier message: 04/06/2010, 13h40
  5. Manipulation des valeurs contenues dans un tableau
    Par khasanouray dans le forum Langage
    Réponses: 3
    Dernier message: 29/05/2007, 20h36

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