--> mettre un string dans un long

Résolu
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006 - 28 oct. 2006 à 08:08
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006 - 28 oct. 2006 à 23:50
Bonjour, j'ai continé mon code d'un autre question
Bien, je veux rajouter plein de petite affaire.  Je veux que la personne quitte le programme lorsqu'il écrit exit lorsqu'il à la chance (si je trouve comment répondre à ma question du sujet, je pourrais le mettre au début lorsqu'on rentre les variables)

Si l'utilisateur est tanné de réessayer de trouver ça réponse, il a juste à écrire : exit
et l'application se ferme!  Ce sera merveilleux!
Voici mon code.  En même, dites moi si il est clair!

------------------------------------------------------------------------------------------------------------------------------------
Module formatif9no4
    'le programme demande à la personne d'entrée une opération arithmétique et la réponse par la suite et évalue ça réponse.
    Sub Main()
        Dim num1, num2, reponseEnfant, reponse As Long
        Dim retry, operateur As String
        Dim affirm As Byte

        Console.WriteLine("Bonjour petit, rentre un nombre, un opérateur arithmétique (+,-,*,/), un ")
        Console.WriteLine("deuxième nombre puis la réponse à ton opération!")
        Console.WriteLine("Vous pouvez arrêter l'application à tout moment si vous écrivez exit")

        'rentré de valeur

        Do
            Console.Write("Le premier nombre est : ")
            num1 = CLng(Console.ReadLine())
            Console.Write("L'opérateur est : ")
            operateur = Console.ReadLine()
            Console.Write("Le deuxième nombre est : ")
            num2 = CLng(Console.ReadLine())
            retry = "oui"

            'vérification de l'opérateur

            Do While operateur <> "+" And operateur <> "-" And operateur <> "*" And operateur <> "/" And operateur <> "exit"
                Console.WriteLine()
                Console.WriteLine("Vous n'avez pas écrit un bon opérateur d'algorithme.")
                Console.WriteLine("Veuillez choisir soit +,-,/,*")
                operateur = Console.ReadLine()
                If operateur = "exit" Then
                    affirm = 9
                    retry = "non"
                    reponse = 10
                    reponseEnfant = 1
                End If
            Loop

            'entrer de la réponse de la personne
            If operateur <> "exit" Then
                Console.Write("La réponse de " & num1 & operateur & num2 & " =")
                reponseEnfant = CLng(Console.ReadLine())
            End If

            'calcule de la réponse dépendant de l'opérateur obtenue

            Select Case operateur
                Case "+"
                    reponse = num1 + num2
                Case "*"
                    reponse = num1 * num2
                Case "/"
                    reponse = CLng(num1 / num2)
                Case "-"
                    reponse = num1 * num2
            End Select

            'vérification de la réponse de la personne

            If reponseEnfant = reponse Then
                affirm = 8
                Console.WriteLine("Bravo, tu as trouvé la réponse!")
            ElseIf affirm = 9 Then                                      'ici, on remarque que la personne a écrit exit
            ElseIf reponseEnfant <> reponse Then
                affirm = 0
            End If

            'recommencement si la personne à une erreur (il peut recommencer 7 autres fois)

            Do While affirm < 7
                Console.WriteLine("Mauvaise réponse,  recommencez.")
                Console.WriteLine("Il te reste " & 7 - affirm & " chance(s).")
                Console.WriteLine()
                Console.Write("La réponse est : ")
                reponseEnfant = CLng(Console.ReadLine())              'si la personne écrivait ici exit que le programme se ferme, je serai heureux!
                If reponseEnfant = reponse Then
                    affirm = 8
                    Console.WriteLine("Bravo, tu as trouvé la réponse!")
                Else
                    affirm = CByte(affirm + 1)
                End If
            Loop

            'vérification si la personne a échoué ses 8 chances

            If affirm = 7 Then
                Console.WriteLine()
                Console.WriteLine("Vous avez fait trop d'erreur.  Allez vous renseigner")
                Console.WriteLine("Votre équation était : " & num1 & operateur & num2 & "=" & reponse)
            End If

            'recommencement du programme

            If retry <> "non" Then
                Console.WriteLine()
                Console.WriteLine("Voulez-vous recommencer?")
                Console.WriteLine("oui ou non")
                retry = Console.ReadLine()
                Do While retry <> "oui" And retry <> "non"
                    Console.WriteLine("Vous avez faire une erreur.  Voulez-vous recommencer?")
                    Console.WriteLine("oui ou non")
                    retry = Console.ReadLine()
                Loop
            End If
        Loop While retry = "oui"
    End Sub

End Module
---------------------------------------------------------------------------------------------------------------------------
merci beaucoup!

22 réponses

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
28 oct. 2006 à 18:23
Slt,

Remplace ça :





reponseEnfant = CLng(Console.ReadLine())              'si la personne écrivait ici exit que le programme se ferme, je serai heureux!





par



 Dim ReponseTemp AsString
 ReponseTemp = Console.ReadLine()
 If LCase(ReponseTemp) = "exit" Then End
 repoonseEnfant = CLng(ReponseTemp)
3
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
28 oct. 2006 à 18:43
Bonjour,
Soit dit en passant, quand tu déclares
        Dim num1, num2, reponseEnfant, reponse As Long
        Dim retry, operateur As String
Je ne crois pas me tromper en disant que ta variable "reponse" est déclarée comme Long, et ta variable "operateur" est une Chaîne de caractères. Toutes les autres sont du type Variant
Jessica
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 18:45
Je ne comprend pas ta réponse, ça veut dire quoi qu'ils sont de type variant?
----------------------
c'est moi, mathben!
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
28 oct. 2006 à 19:18
Extrait de l'Aide de VB
Quand vous ne spécifiez aucun type de données, le type de données par défaut de la variable est Variant. Extrêmement changeant, le type de données Variant peut représenter plusieurs types de données selon les situations. Quand vous affectez ces types de données à une variable Variant, vous n'avez pas besoin de les convertir : Visual Basic effectue automatiquement toutes les conversions nécessaires.

Comme le montrent ces exemples, une instruction Declaration peut combiner plusieurs déclarations :
Private I As Integer, Amt As Double
Private YourName As String, BillsPaid As Currency
Private Test, Amount, J As Integer



Note   Si vous ne spécifiez pas de type de données, la variable prend le type de données par défaut. Dans l'exemple ci-dessus, les variables Test et Amount sont de type Variant. Cela vous surprendra peut-être si, habitué à d'autres langages, vous vous attendiez à ce que les variables de la même instruction Declaration soient toutes du type spécifié (en l'occurrence, Integer).

Jessica
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 19:36
merci, je vais donc aller lire l'extrait vb dans les jours à venir.  Dit moi, si tu connais la réponse, que les variables soient de type variant, ça ne va pas changer mon code, car vb gère tout seul?  Je devrais tout mettre les variables séparées pour m'habituer aux autres codes?

c'est moi, mathben!
0
jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
28 oct. 2006 à 20:08
Salut,
Étant dans la classe de MathBen dans notre cours de programmation, je vais vous spécifier quelques restrictions que le professeur nous a indiqué. Nous ne devons JAMAIS utiliser un "end" pour nous sortir du programme(et je trouve cette restriction très bien)
yvesyves -> Ta réponse est bien, seulement les "end" ne sont pas conseiller et permis dans notre cours

mathben, tu peux t'en tirer facilement sans le "end". Tu n'as qu'a restructurer ton programme. Valide tes informations au début du programme, ensuite commence le calcul. Donc si l'utilisiteur a écrit "exit" dans n'importe quelle des données entré, alors le programme saute le reste. Tu sais comment, on en a fait beaucoup durant le cours. Utilise les if, les select et les boucles.

-Jn-
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
28 oct. 2006 à 20:39
Re,
Ca ne change rien à ton code, la seule différence est qu'il est plus gourmand en mémoire.
Le type de données Variant est doté d'une taille de stockage numérique de 16 octets et peut contenir la même plage de données que le type Decimal, ou d'une taille de stockage de caractère de 22 octets (plus la longueur de la chaîne) et peut alors stocker tout texte.
(C'est pas de moi, c'est dans MSDN) Pour info, un "Long" ne prend que 4 octets.
De toute façon, c'est une bonne habitude à prendre que de déclarer individuellement les
variables
Dim num1 as Long, num2 as Long, reponseEnfant as Long, reponse As Long
Jessica
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 20:47
Salut,

l'explication de Jessica est parfaite, et en plus de bouffer des ressources (le type Variant), certaines fonctions intégrées à vb, demandent un certain type de donnée (par ex Long ou String) et te renvoi comme résultat un type aussi.
Si la variable récéptionnant la valeur ou donnant le paramètre ne correspond pas au type de données de la fonction, tu auras une erreur.


Exemple simple :


Function MonthName(Month As Long, [Abbreviate As Boolean = False]) As String

@++





<hr width ="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 20:50
hoo, je n'ai rien comprit de ce que tu as dit mortalino

j'ai remodifié mon code.
---------------------dim num1 As Long 0, dim num2 as Long 0, dim reponseEnfant as Long = 0, dim reponse as long = 0
----------------
il a une erreur, pourquoi je ne peux pas le faire comme ça?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 20:51
jnbrunet, comment tu fais pour quitter ton programme sans End ?

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 20:57
"hoo, je n'ai rien comprit de ce que tu as dit mortalino "
>> c'est pas grave, quand tu t'habitueras à déclarer le bon type de données, au fur et à mesure, ce sera plus clair.

"il a une erreur, pourquoi je ne peux pas le faire comme ça?"
>> Parce que. C'est comme le français : t'as le sujet, puis le verbe, etc... dans un ordre bien précis, bah là c'est pareil, la syntaxe est à respecter :

' ***              1 ERE POSSIBILITE :
Dim num1           As Long
Dim num2           As Long
Dim reponseEnfant  As Long
Dim reponse        As long

num1 = 0
num2 = 0
reponseEnfant = 0
reponse = 0

____________________________________________________________

' ***              2 EME POSSIBILITE :
Dim num1 As Long, num2 As Long, reponseEnfant As Long, reponse As long

num1 = 0: num2 = 0: reponseEnfant = 0: reponse = 0

--Mortalino-- Colorisation automatique

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 21:07
Merci beaucoup, j'ai fait ce que vous m'avez conseillé!  Maintenant, dites moi, est-ce que mon programme est clair?  J'ai presque tout mis ce que je voulais, maintenant, je voudrais savoir comment faire pour lorsque la personne entre un mot dans une place ou il doit rentré un nombre
genre, if num1Exit <> nombre
console.writeline("tu dois rentrer un nombre!")
end if
...
-----------------------------------------------------------------------------------------------------------------------------------
Module formatif9no4
    'le programme demande à la personne d'entrée une opération arithmétique et la réponse par la suite et évalue ça réponse.
    Sub Main()
        Dim num1 As Long, num2 As Long, reponseEnfant As Long, reponse As Long
        Dim retry As String, operateur As String, num1Exit As String, num2Exit As String, reponseEnfantExit As String
        Dim affirm As Byte

        Console.WriteLine("Bonjour petit, rentre un nombre, un opérateur arithmétique (+,-,*,/), un ")
        Console.WriteLine("deuxième nombre puis la réponse à ton opération!")
        Console.WriteLine("Vous pouvez arrêter l'application à tout moment si vous écrivez exit")

        'rentrer de valeur

        Do
            retry = "oui"
            operateur = "salut"
            num2Exit = "salut"
            Console.Write("Le premier nombre est : ")
            num1Exit = (Console.ReadLine())
            If num1Exit = "exit" Then
                affirm = 9
                retry = "non"
            Else
                num1 = CLng(num1Exit)
            End If
            If num1Exit <> "exit" Then
                Console.Write("L'opérateur est : ")
                operateur = Console.ReadLine()
                If operateur = "exit" Then
                    affirm = 9
                    retry = "non"
                Else
                    Console.Write("Le deuxième nombre est : ")
                    num2Exit = Console.ReadLine()
                    If num2Exit = "exit" Then
                        affirm = 9
                        retry = "non"
                    Else
                        num2 = CLng(num2Exit)
                    End If
                End If
            End If

            'vérification de l'opérateur

            If num1Exit <> "exit" And num2Exit <> "exit" Then
                Do While operateur <> "+" And operateur <> "-" And operateur <> "*" And operateur <> "/" And operateur <> "exit"
                    Console.WriteLine()
                    Console.WriteLine("Vous n'avez pas écrit un bon opérateur d'algorithme.")
                    Console.WriteLine("Veuillez choisir soit +,-,/,*")
                    operateur = Console.ReadLine()
                    If operateur = "exit" Then
                        affirm = 9
                        retry = "non"
                    End If
                Loop
            End If

            'entrer de la réponse de la personne

            If operateur <> "exit" And num1Exit <> "exit" And num2Exit <> "exit" Then
                Console.Write("La réponse de " & num1 & operateur & num2 & "=")
                reponseEnfant = CLng(Console.ReadLine())
            End If

            'calcule de la réponse dépendant de l'opérateur obtenue

            Select Case operateur
                Case "+"
                    reponse = num1 + num2
                Case "*"
                    reponse = num1 * num2
                Case "/"
                    reponse = CLng(num1 / num2)
                Case "-"
                    reponse = num1 - num2
            End Select

            'vérification de la réponse de la personne

            If num1Exit <> "exit" And operateur <> "exit" And num2Exit <> "exit" Then
                If reponseEnfant = reponse Then
                    affirm = 8
                    Console.WriteLine("Bravo, tu as trouvé la réponse!")
                ElseIf reponseEnfant <> reponse Then
                    affirm = 0
                End If
            End If

            'recommencement si la personne à une erreur (il peut recommencer 7 autres fois)

            Do While affirm < 7
                Console.WriteLine("Mauvaise réponse,  recommencez.")
                Console.WriteLine("Il te reste " & 7 - affirm & " chance(s).")
                Console.WriteLine()
                Console.Write("La réponse est : ")
                reponseEnfantExit = Console.ReadLine()
                If reponseEnfantExit = "exit" Then
                    affirm = 9
                Else
                    reponseEnfant = CLng(reponseEnfantExit)
                End If
                If affirm <> 9 Then
                    If reponseEnfant = reponse Then
                        affirm = 8
                        Console.WriteLine()
                        Console.WriteLine("Bravo, tu as trouvé la réponse!")
                    Else
                        affirm = CByte(affirm + 1)
                    End If
                End If
            Loop

            'vérification si la personne a échoué ses 8 chances

            If affirm = 7 Then
                Console.WriteLine()
                Console.WriteLine("Vous avez fait trop d'erreur.  Allez vous renseigner")
                Console.WriteLine("Votre équation était : " & num1 & operateur & num2 & "=" & reponse)
            End If

            'recommencement du programme

            If retry <> "non" Then
                Console.WriteLine()
                Console.WriteLine("Voulez-vous recommencer?")
                Console.WriteLine("oui ou non")
                retry = Console.ReadLine()
                Do While retry <> "oui" And retry <> "non"
                    Console.WriteLine("Vous avez faire une erreur.  Voulez-vous recommencer?")
                    Console.WriteLine("oui ou non")
                    retry = Console.ReadLine()
                Loop
            End If
        Loop While retry = "oui"
    End Sub

End Module
----------------------------------------------------------------------------------------------------------------------------
merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 21:10
If Not
IsNumeric(CStr(num1Exit)) Then
   console.writeline("tu dois rentrer un nombre!")
End If

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 21:32
Wow, trop génial, maintenant, je n'ai trouvé aucune erreur dans mon programme.  Ouais, génial!
Essayer de trouver une erreur dans mon programme svp!
------------------------------------------------------------------------------------------------------------------------------
Module formatif9no4
    'le programme demande à la personne d'entrée une opération arithmétique et la réponse par la suite et évalue ça réponse.
    Sub Main()
        Dim num1 As Long, num2 As Long, reponseEnfant As Long, reponse As Long
        Dim retry As String, operateur As String, num1Exit As String, num2Exit As String, reponseEnfantExit As String
        Dim affirm As Byte

        Console.WriteLine("Bonjour petit, rentre un nombre, un opérateur arithmétique (+,-,*,/), un ")
        Console.WriteLine("deuxième nombre puis la réponse à ton opération!")
        Console.WriteLine("Vous pouvez arrêter l'application à tout moment si vous écrivez exit")

        'rentrer de valeur

        Do
            retry = "oui"
            operateur = "salut"
            num2Exit = "salut"
            Console.Write("Le premier nombre est : ")
            num1Exit = Console.ReadLine()
            Do While Not IsNumeric(CStr(num1Exit)) And num1Exit <> "exit"
                Console.WriteLine()
                Console.WriteLine("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                Console.WriteLine("Veuillez recommencer.")
                Console.WriteLine()
                Console.Write("Le premier nombre est : ")
                num1Exit = Console.ReadLine()
            Loop
            If num1Exit = "exit" Then
                affirm = 9
                retry = "non"
            Else
                num1 = CLng(num1Exit)
            End If
            If num1Exit <> "exit" Then
                Console.Write("L'opérateur est : ")
                operateur = Console.ReadLine()
                If operateur = "exit" Then
                    affirm = 9
                    retry = "non"
                Else
                    Console.Write("Le deuxième nombre est : ")
                    num2Exit = Console.ReadLine()
                    Do While Not IsNumeric(CStr(num2Exit)) And num2Exit <> "exit"
                        Console.WriteLine()
                        Console.WriteLine("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                        Console.WriteLine("Veuillez recommencer.")
                        Console.WriteLine()
                        Console.Write("Le deuxième nombre est : ")
                        num2Exit = Console.ReadLine()
                    Loop
                    If num2Exit = "exit" Then
                        affirm = 9
                        retry = "non"
                    Else
                        num2 = CLng(num2Exit)
                    End If
                End If
            End If

            'vérification de l'opérateur

            If num1Exit <> "exit" And num2Exit <> "exit" Then
                Do While operateur <> "+" And operateur <> "-" And operateur <> "*" And operateur <> "/" And operateur <> "exit"
                    Console.WriteLine()
                    Console.WriteLine("Vous n'avez pas écrit un bon opérateur d'algorithme.")
                    Console.WriteLine("Veuillez choisir soit +,-,/,*")
                    operateur = Console.ReadLine()
                    If operateur = "exit" Then
                        affirm = 9
                        retry = "non"
                    End If
                Loop
            End If

            'entrer de la réponse de la personne

            If operateur <> "exit" And num1Exit <> "exit" And num2Exit <> "exit" Then
                Console.Write("La réponse de " & num1 & operateur & num2 & "=")
                reponseEnfant = CLng(Console.ReadLine())
            End If

            'calcule de la réponse dépendant de l'opérateur obtenue

            Select Case operateur
                Case "+"
                    reponse = num1 + num2
                Case "*"
                    reponse = num1 * num2
                Case "/"
                    reponse = CLng(num1 / num2)
                Case "-"
                    reponse = num1 - num2
            End Select

            'vérification de la réponse de la personne

            If num1Exit <> "exit" And operateur <> "exit" And num2Exit <> "exit" Then
                If reponseEnfant = reponse Then
                    affirm = 8
                    Console.WriteLine("Bravo, tu as trouvé la réponse!")
                ElseIf reponseEnfant <> reponse Then
                    affirm = 0
                End If
            End If

            'recommencement si la personne à une erreur (il peut recommencer 7 autres fois)

            Do While affirm < 7
                Console.WriteLine("Mauvaise réponse,  recommencez.")
                Console.WriteLine("Il te reste " & 7 - affirm & " chance(s).")
                Console.WriteLine()
                Console.Write("La réponse est : ")
                reponseEnfantExit = Console.ReadLine()
                If reponseEnfantExit = "exit" Then
                    affirm = 9
                Else
                    reponseEnfant = CLng(reponseEnfantExit)
                End If
                If affirm <> 9 Then
                    If reponseEnfant = reponse Then
                        affirm = 8
                        Console.WriteLine()
                        Console.WriteLine("Bravo, tu as trouvé la réponse!")
                    Else
                        affirm = CByte(affirm + 1)
                    End If
                End If
            Loop

            'vérification si la personne a échoué ses 8 chances

            If affirm = 7 Then
                Console.WriteLine()
                Console.WriteLine("Vous avez fait trop d'erreur.  Allez vous renseigner")
                Console.WriteLine("Votre équation était : " & num1 & operateur & num2 & "=" & reponse)
            End If

            'recommencement du programme

            If retry <> "non" Then
                Console.WriteLine()
                Console.WriteLine("Voulez-vous recommencer?")
                Console.WriteLine("oui ou non")
                retry = Console.ReadLine()
                Do While retry <> "oui" And retry <> "non"
                    Console.WriteLine("Vous avez faire une erreur.  Voulez-vous recommencer?")
                    Console.WriteLine("oui ou non")
                    retry = Console.ReadLine()
                Loop
            End If
        Loop While retry = "oui"
    End Sub

End Module
------------------------------------------------------------------------------------------------------------------------
Merci tout le monde de m'avoir aider.
Svp, donnez moi des commentaires!
merci

mathben
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
28 oct. 2006 à 21:43
Et si je tape EXIT ou Exit ou eXit ou .... au lieu de exit?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 21:50
Bien vu,

If LCase(num1Exit) = "exit" Then...

LowerCase = Conversion en minuscules

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_mathben Messages postés 30 Date d'inscription vendredi 18 novembre 2005 Statut Membre Dernière intervention 10 décembre 2006
28 oct. 2006 à 22:01
J'y avais pas pensé.  Merci encore.  Je remontre encore mon code (il commence à devenir gros!).  J'avais oublié de mettre dans la place ou l'enfant à fait une erreure de mettre le code si il n'a pas mit de chiffre.  Puis j'ai mit des tolower partout ou il le faut.
En passant, on n'est pas obligé de lui demander si la variable est = à "exit"
qu'il soit égale ou pas, ce n'est pas grave, ça ne va rien changer.

J'ai une question qui est en rapport au programme.  Comment on fait dans vb.net pour rajouter le nombre de ligne?je m'en rappelle plus, c'est toujours amusant de savoir combien de ligne on a rajouté juste pour modifier un bout de code
ou pour se retrouver plus rapidement, c'est la principale raison.

voici mon code, maintenant, il a d'autre erreure?
<hr size="2" width="100%" />Module formatif9no4
    'le programme demande à la personne d'entrée une opération arithmétique et la réponse par la suite et évalue ça réponse.
    Sub Main()
        Dim num1 As Long, num2 As Long, reponseEnfant As Long, reponse As Long
        Dim retry As String, operateur As String, num1Exit As String, num2Exit As String, reponseEnfantExit As String
        Dim affirm As Byte

        Console.WriteLine("Bonjour petit, rentre un nombre, un opérateur arithmétique (+,-,*,/), un ")
        Console.WriteLine("deuxième nombre puis la réponse à ton opération!")
        Console.WriteLine("Vous pouvez arrêter l'application à tout moment si vous écrivez exit.")

        'rentrer de valeur

        retry = "oui"
        operateur = "salut"
        num2Exit = "salut"

        Do
            Console.Write("Le premier nombre est : ")
            num1Exit = Console.ReadLine()
            num1Exit = num1Exit.ToLower()
            Do While Not IsNumeric(CStr(num1Exit)) And num1Exit <> "exit"
                Console.WriteLine()
                Console.WriteLine("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                Console.WriteLine("Veuillez recommencer.")
                Console.WriteLine()
                Console.Write("Le premier nombre est : ")
                num1Exit = Console.ReadLine()
                num1Exit = num1Exit.ToLower()
            Loop
            If num1Exit = "exit" Then
                affirm = 9
                retry = "non"
            Else
                num1 = CLng(num1Exit)
            End If
            If num1Exit <> "exit" Then
                Console.Write("L'opérateur est : ")
                operateur = Console.ReadLine()
                operateur = operateur.ToLower()
                If operateur = "exit" Then
                    affirm = 9
                    retry = "non"
                Else
                    Console.Write("Le deuxième nombre est : ")
                    num2Exit = Console.ReadLine()
                    num2Exit = num2Exit.ToLower()
                    Do While Not IsNumeric(CStr(num2Exit)) And num2Exit <> "exit"
                        Console.WriteLine()
                        Console.WriteLine("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                        Console.WriteLine("Veuillez recommencer.")
                        Console.WriteLine()
                        Console.Write("Le deuxième nombre est : ")
                        num2Exit = Console.ReadLine()
                        num2Exit = num2Exit.ToLower()
                    Loop
                    If num2Exit = "exit" Then
                        affirm = 9
                        retry = "non"
                    Else
                        num2 = CLng(num2Exit)
                    End If
                End If
            End If

            'vérification de l'opérateur

            If num1Exit <> "exit" And num2Exit <> "exit" Then
                Do While operateur <> "+" And operateur <> "-" And operateur <> "*" And operateur <> "/" And operateur <> "exit"
                    Console.WriteLine()
                    Console.WriteLine("Vous n'avez pas écrit un bon opérateur d'algorithme.")
                    Console.WriteLine("Veuillez choisir soit +,-,/,*")
                    operateur = Console.ReadLine()
                    operateur = operateur.ToLower()
                    If operateur = "exit" Then
                        affirm = 9
                        retry = "non"
                    End If
                Loop
            End If

            'entrer de la réponse de la personne

            If operateur <> "exit" And num1Exit <> "exit" And num2Exit <> "exit" Then
                Console.Write("La réponse de " & num1 & operateur & num2 & "=")
                reponseEnfant = CLng(Console.ReadLine())
            End If

            'calcule de la réponse dépendant de l'opérateur obtenue

            Select Case operateur
                Case "+"
                    reponse = num1 + num2
                Case "*"
                    reponse = num1 * num2
                Case "/"
                    reponse = CLng(num1 / num2)
                Case "-"
                    reponse = num1 - num2
            End Select

            'vérification de la réponse de la personne

            If num1Exit <> "exit" And operateur <> "exit" And num2Exit <> "exit" Then
                If reponseEnfant = reponse Then
                    affirm = 8
                    Console.WriteLine("Bravo, tu as trouvé la réponse!")
                ElseIf reponseEnfant <> reponse Then
                    affirm = 0
                End If
            End If

            'recommencement si la personne à une erreur (il peut recommencer 7 autres fois)

            Do While affirm < 7
                Console.WriteLine("Mauvaise réponse,  recommencez.")
                Console.WriteLine("Il te reste " & 7 - affirm & " chance(s).")
                Console.WriteLine()
                Console.Write("La réponse est : ")
                reponseEnfantExit = Console.ReadLine()
                Do While Not IsNumeric(CStr(reponseEnfantExit)) And reponseEnfantExit <> "exit"
                    Console.WriteLine()
                    Console.WriteLine("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                    Console.WriteLine("Veuillez recommencer.")
                    Console.WriteLine()
                    Console.Write("La réponse est : ")
                    reponseEnfantExit = Console.ReadLine()
                    reponseEnfantExit = reponseEnfantExit.ToLower()
                Loop
                If reponseEnfantExit = "exit" Then
                    affirm = 9
                Else
                    reponseEnfant = CLng(reponseEnfantExit)
                End If
                If affirm <> 9 Then
                    If reponseEnfant = reponse Then
                        affirm = 8
                        Console.WriteLine()
                        Console.WriteLine("Bravo, tu as trouvé la réponse!")
                    Else
                        affirm = CByte(affirm + 1)
                    End If
                End If
            Loop

            'vérification si la personne a échoué ses 8 chances

            If affirm = 7 Then
                Console.WriteLine()
                Console.WriteLine("Vous avez fait trop d'erreur.  Allez vous renseigner")
                Console.WriteLine("Votre équation était : " & num1 & operateur & num2 & "=" & reponse)
            End If

            'recommencement du programme

            If retry <> "non" Then
                Console.WriteLine()
                Console.WriteLine("Voulez-vous recommencer?")
                Console.WriteLine("oui ou non")
                retry = Console.ReadLine()
                Do While retry <> "oui" And retry <> "non"
                    Console.WriteLine("Vous avez faire une erreur.  Voulez-vous recommencer?")
                    Console.WriteLine("oui ou non")
                    retry = Console.ReadLine()
                Loop
            End If
        Loop While retry = "oui"
    End Sub

End Module
<hr size="2" width="100%" />merci beaucoup encore
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 oct. 2006 à 22:14
Voici ton code avec 2  3 modifications :

    Sub Main()
        Dim num1 As Long, num2 As Long, reponseEnfant As Long, reponse As Long
        Dim retry As String, operateur As String, num1Exit As String, num2Exit As String, reponseEnfantExit As String
        Dim affirm As Byte

        Console.WriteLine ("Bonjour petit, rentre un nombre, un opérateur arithmétique (+,-,*,/), un ")
        Console.WriteLine ("deuxième nombre puis la réponse à ton opération!")
        Console.WriteLine ("Vous pouvez arrêter l'application à tout moment si vous écrivez exit")

        'rentrer de valeur

            retry = "oui": operateur = "salut": num2Exit = "salut"
        Do
            Console.Write ("Le premier nombre est : ")
            num1Exit = Console.ReadLine()
            Do While Not IsNumeric(CStr(num1Exit)) And num1Exit <> "exit"
' *** apres le And, c'est inutile (le And num1Exit <> "exit") ***
                Console.WriteLine()
                Console.WriteLine ("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                Console.WriteLine ("Veuillez recommencer.")
                Console.WriteLine()
                Console.Write ("Le premier nombre est : ")
                num1Exit = Console.ReadLine()
            Loop
            If LCase(num1Exit) = "exit" Then
                affirm = 9: retry = "non"
            Else
                num1 = CLng(num1Exit)
            End If
            If LCase(num1Exit) <> "exit" Then
                Console.Write ("L'opérateur est : ")
                operateur = Console.ReadLine()
                If LCase(operateur) = "exit" Then
                    affirm = 9: retry = "non"
                Else
                    Console.Write ("Le deuxième nombre est : ")
                    num2Exit = Console.ReadLine()
                    Do While Not IsNumeric(CStr(num2Exit)) And num2Exit <> "exit"
                        Console.WriteLine()
                        Console.WriteLine ("Vous vous êtes trompés, vous n'avez pas entrer de chiffre.")
                        Console.WriteLine ("Veuillez recommencer.")
                        Console.WriteLine()
                        Console.Write ("Le deuxième nombre est : ")
                        num2Exit = Console.ReadLine()
                    Loop
                    If LCase(num2Exit) = "exit" Then
                        affirm = 9: retry = "non"
                    Else
                        num2 = CLng(num2Exit)
                    End If
                End If
            End If

            'vérification de l'opérateur

            If LCase(num1Exit) <> "exit" And LCase(num2Exit) <> "exit" Then
                Do While operateur <> "+" And operateur <> "-" And operateur <> "*" And operateur <> "/" And operateur <> "exit"
                    'Console.WriteLine()
                    Console.WriteLine ("Vous n'avez pas écrit un bon opérateur d'algorithme.")
                    Console.WriteLine ("Veuillez choisir soit +,-,/,*")
                    operateur = Console.ReadLine()
                    If LCase(operateur) = "exit" Then
                        affirm = 9: retry = "non"
                    End If
                Loop
            End If

            'entrer de la réponse de la personne

            If LCase(operateur) <> "exit" And LCase(num1Exit) <> "exit" And LCase(num2Exit) <> "exit" Then
                Console.Write ("La réponse de " & num1 & operateur & num2 & "=")
                reponseEnfant = CLng(Console.ReadLine())
            End If

            'calcule de la réponse dépendant de l'opérateur obtenue

            Select Case operateur
                Case "+"
                    reponse = num1 + num2
                Case "*"
                    reponse = num1 * num2
                Case "/"
                    reponse = CLng(num1 / num2)
                Case "-"
                    reponse = num1 - num2
            End Select

            'vérification de la réponse de la personne

            If LCase(num1Exit) <> "exit" And LCase(operateur) <> "exit" And LCase(num2Exit) <> "exit" Then
                If reponseEnfant = reponse Then
                    affirm = 8: Console.WriteLine ("Bravo, tu as trouvé la réponse!")
                ElseIf LCase(reponseEnfant) <> LCase(reponse) Then
                    affirm = 0
                End If
            End If

            'recommencement si la personne à une erreur (il peut recommencer 7 autres fois)

            Do While affirm < 7
                Console.WriteLine ("Mauvaise réponse,  recommencez.")
                Console.WriteLine ("Il te reste " & 7 - affirm & " chance(s).")
                'Console.WriteLine()
                Console.Write ("La réponse est : ")
                reponseEnfantExit = Console.ReadLine()
                If reponseEnfantExit = "exit" Then
                    affirm = 9
                Else
                    reponseEnfant = CLng(reponseEnfantExit)
                End If
                If affirm <> 9 Then
                    If reponseEnfant = reponse Then
                        affirm = 8
                        'Console.WriteLine()
                        Console.WriteLine ("Bravo, tu as trouvé la réponse!")
                    Else
                        affirm = CByte(affirm + 1)
                    End If
                End If
            Loop

            'vérification si la personne a échoué ses 8 chances

            If affirm = 7 Then
                'Console.WriteLine()
                Console.WriteLine ("Vous avez fait trop d'erreur.  Allez vous renseigner")
                Console.WriteLine ("Votre équation était : " & num1 & operateur & num2 & "=" & reponse)
            End If

            'recommencement du programme

            If retry <> "non" Then
                'Console.WriteLine()
                Console.WriteLine ("Voulez-vous recommencer?")
                Console.WriteLine ("oui ou non")
                retry = Console.ReadLine()
                Do While retry <> "oui" And retry <> "non"
                    Console.WriteLine ("Vous avez faire une erreur.  Voulez-vous recommencer?")
                    Console.WriteLine ("oui ou non")
                    retry = Console.ReadLine()
                Loop
            End If
        Loop While retry = "oui"
    End Sub

--Mortalino-- Colorisation automatique

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
jnbrunet Messages postés 258 Date d'inscription samedi 25 décembre 2004 Statut Membre Dernière intervention 13 novembre 2012
28 oct. 2006 à 22:20
mortalino -> jnbrunet, comment tu fais pour quitter ton programme sans End ?

On est en mode console je te rapelle, mettre un End au milieu du code...c'est pas idéale. En tous cas, dans notre cours, notre prof nous fou un 0. Il faut que le programme se rendre jusqu'a la fin pour terminer. Math a bien réussi sans End.

-Jn-
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
28 oct. 2006 à 22:26
Même remarque pour tes OuI ou nON;
si tu fais un test sur un string, TOUJOURS t'assurer de la casse avant de tester
Pour ce qui est de la logique ou de l'optimisation du code, je laiise l'appréciation à ton prof
Amicalement
Jessica
0
Rejoignez-nous