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 :

Analyse et obligation d'utiliser des chaînes numériques [Débutant]


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Analyse et obligation d'utiliser des chaînes numériques
    Bonjour,

    Je veux faire un jeu simple avec le fameux nombre à trouver entre 0 et 100. Le programme doit donc renvoyer en combien de coup le nombre à été trouvé.

    Tout fonctionne normalement sauf que j'essaye désespérément de faire en sorte que l'utilisateur inscrit bien un nombre et non pas n’importe quoi comme des lettres, la touche entrée, etc... afin de pouvoir éviter les erreurs.

    Le code n'est pas forcement code d'un professionnel du langage c# mais bon j'arrive à m'y retrouver comme cela :-)

    Pour faire cela j'ai voulu utiliser l'instruction(int.TryParse (saisie , out valeurSaisie )), mais cela ne fonctionne pas du tout.

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
     
                Touche(); // Appel de la méthode Touche
     
            }
            static void Touche()
            {
                int valeurATrouver = new Random().Next(0, 100);
                int i = 1;
                bool trouve = false;
     
     
                Console.WriteLine(valeurATrouver); // Affiche le nombre à trouver 
     
                Console.WriteLine(" Veuillez saisir votre nombre (entre 0 et 100) : ");
     
                    while (!trouve)
                    {
     
                        string saisie = Console.ReadLine();
                        int saisie1 = Convert.ToInt32(saisie); // Converti le string Saisie en int pour faire le comparaison avec Valeur à trouver
                        int valeurSaisie;
     
                        if (int.TryParse (saisie , out valeurSaisie )) // Test mais la ca ne fait rien du tout
                        {
     
     
                                if (saisie1 == (valeurATrouver))
                                {
                                    trouve = true;
                                }
                                else
                                {
                                    i++;
                                    if (saisie1 < valeurATrouver)
                                    { Console.WriteLine("Le nombre à trouver est plus grand"); }
                                    else Console.WriteLine("Le nombre à trouver est plus petit");
                                }
     
                        }
                            else
                            Console.WriteLine ("La valeur saisie est incorrecte ,veuillez recommencer ...");
     
                    }
     
     
                    Console.WriteLine("Vous avez trouvé le nombre en " + i + " coups");
     
            }
     
        }
     
    }
    Si vous pourriez m'éclairer, ce serait fort sympathique.



    Le code est en attachement.

    Merci
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Ton appel à Convert.ToInt32 est inutile puisque tu fais un int.TryParse derrière, et il peut échouer... si ça arrive, le programme se termine, et donc ton int.TryParse n'est jamais atteint. D'autre part, tu n'utilises jamais la variable valeurSaisie qui est le résultat du int.TryParse...

    Il faut donc simplement que tu dégages le Convert.ToInt32 et la variable saisie1 qui ne servent à rien ; sinon ça semble à peu près correct.

    Sinon, 2 petits conseils :

    - utilise le débogueur pour résoudre ce genre de problème ; l'exécution pas à pas permet de voir facilement où est le bug.

    - commenter son code, c'est bien, mais mettre des commentaires comme "Appel de la méthode Touche" ou "Converti le string Saisie en int", ça ne sert strictement à rien... on voit très bien ce que fait l'instruction sans avoir besoin du commentaire. Ne mets pas des commentaires juste parce qu'on t'a dit qu'il fallait en mettre ; mets en seulement quand c'est nécessaire à la bonne compréhension du code. Un code bien écrit peut souvent se passer complètement de commentaires ou presque, parce qu'on comprend ce qu'il fait juste en le lisant.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci du conseil. Cela marche maintenant avec le code suivant:

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
     
                Touche(); 
     
            }
            static void Touche()
            {
                int valeurATrouver = new Random().Next(0, 100);
                int i = 1;
                bool trouve = false;
                string saisie = string.Empty;
     
                Console.WriteLine(valeurATrouver); // Affiche le nombre à trouver 
     
                Console.WriteLine(" Veuillez saisir votre nombre (entre 0 et 100) : ");
     
                    while (!trouve)
                    {
     
                        saisie = Console.ReadLine();
                        int valeurSaisie;
     
                        if (int.TryParse (saisie , out valeurSaisie )) 
                        {
     
     
                            if (valeurSaisie == valeurATrouver)
                                {
                                    trouve = true;
                                }
                                else
                                {
                                    i++;
                                    if (valeurSaisie < valeurATrouver)
                                    { Console.WriteLine("Le nombre à trouver est plus grand"); }
                                    else Console.WriteLine("Le nombre à trouver est plus petit");
                                }
     
                        }
                            else
                            Console.WriteLine ("La valeur saisie est incorrecte ,veuillez recommencer ...");
     
                    }
     
     
                    Console.WriteLine("Vous avez trouvé le nombre en " + i + " coups");
     
            }
     
        }
     
    }

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    N'oublie pas de marquer le topic comme

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

Discussions similaires

  1. Dans quels cas est-on obligés d'utiliser des mutex ?
    Par kidpaddle2 dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 18/07/2010, 20h05
  2. Réponses: 1
    Dernier message: 11/05/2010, 20h43
  3. Réponses: 2
    Dernier message: 04/12/2009, 14h34
  4. Réponses: 2
    Dernier message: 12/11/2009, 16h34
  5. [TP] Application utilisant modèle des Chaînes de Markov Cachées ?
    Par williamdunord dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 17/02/2008, 22h19

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