rien_a_voir
Messages postés5Date d'inscriptionmercredi 1 décembre 2004StatutMembreDernière intervention20 avril 2005
-
20 avril 2005 à 16:14
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 2006
-
20 avril 2005 à 17:12
je débute en visual basic et on m'a donner un exercice à faire et je n'y arrive pas...
je vous cite ce fameux exercice:
"une partie consiste à lancer un certain nombrede fois un dé à six faces numérotées de 1 à 6. A chaque lancer, le gain obtenu est fonction du résultat du lancer, il est donné dans le tableau suivant:
- 1,2...........-2€
- 3.............-1€
- 4,5............2€
- 6...............7€
Le jeu s'arrête lorsque le joueur obtient, àdeux lancers consécutifs, le même résultat.
La mise est de 1€ pour chaque partie.
Tous les lancers sont pris en compte pour le calcul du gain total.
On veut écrire un algorithme qui permet de simuler une partie et affiche, pour chaque lancer, le numéro obtenu et, à la fin de la partie, le gain total (positif, nul ou négatif) du joueur."
j'ai commencé quelquechose mais ça ne fonctionne pas et je suis en train de craquer!!!!
Private Sub CommandButton3_Click()
Dim D, D2, Diff, G As Integer
G = -1
Do
D = Int(6 * Rnd() + 1)
MsgBox (D)
If D < 3 Then
G = G + -2
Else
If D = 3 Then
G = G + -1
Else
If D < 6 Then
G = G + 2
Else: G = G + 7
End If
End If
End If
D2 = Int(6 * Rnd() + 1)
MsgBox (D2)
If D2 < 3 Then
G = G + -2
Else
If D2 = 3 Then
G = G + -1
Else
If D2 < 6 Then
G = G + 2
Else: G = G + 7
End If
End If
End If
Diff = D2 - D
Loop Until Diff = 0
MsgBox "gain total : " & G & " €."
nostra78
Messages postés137Date d'inscriptionjeudi 10 mars 2005StatutMembreDernière intervention 6 décembre 2005 20 avril 2005 à 16:39
Je propose ca
Peut être amélioré
Private Sub CommandButton1_Click()
Dim D, D2, Diff, G As Integer
G = -1
Debut:
D = Int(6 * Rnd() + 1)
MsgBox (D)
If D < 3 Then
G = G + -2
Else
If D = 3 Then
G = G + -1
Else
If D < 6 Then
G = G + 2
Else: G = G + 7
End If
End If
End If
Diff = D2 - D
If Diff = 0 Then
GoTo Fin
End If
D2 = Int(6 * Rnd() + 1)
MsgBox (D2)
If D2 < 3 Then
G = G + -2
Else
If D2 = 3 Then
G = G + -1
Else
If D2 < 6 Then
G = G + 2
Else: G = G + 7
End If
End If
End If
Diff = D2 - D
If Diff <> 0 Then
GoTo Debut
End If
Fin:
MsgBox "gain total : " & G & " €."
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 20 avril 2005 à 16:54
Moi, je proposerait plutot ceci :
Option Explicit
Private Sub Command1_Click()
Dim OldDe As Long, De As Long, Gain As Long
Gain = 0
OldDe = 0
De = 1
Do While OldDe <> De
OldDe = De
Gain = Gain - 1
De = Int(6 * Rnd() + 1)
Select Case De
Case 1, 2
Gain = Gain - 2
Case 3
Gain = Gain - 1
Case 4, 5
Gain = Gain + 2
Case 6
Gain = Gain + 7
End Select Debug.Print "Lancé " & De & vbCrLf & "Gain " & Gain
Loop
Debug.Print "Gain final = " & Gain
End Sub
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 20 avril 2005 à 17:07
Juste une petite précision !! A tous ceux que j'ai déjà envoyé ballader parce qu'ils nous donnaient l'enoncé d'un exo qu'ils avaient à faire en les traitant d'étudiant Nian Nian !! J'ai répondu à notre ami "rien_a_voir" cr, lui (ou elle ?) au moins, il | elle s'est creusé la tête avant et nous a sorti un bout de code à l'origine ...
Voila ! C'était juste pour préciser que je n'ai pas changé d'opinion sur les étudiants qui ont un baobab dans la main !!!
rien_a_voir
Messages postés5Date d'inscriptionmercredi 1 décembre 2004StatutMembreDernière intervention20 avril 2005 20 avril 2005 à 17:09
je vous remerci (je suis un étudiant) et j'ai bossé dessus pendant 2 heures sans pouvoir trouvé la solution qui m'a débloqué grâce à vous, je vous remercie encore....
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 20 avril 2005 à 17:12
Autre défaut dans ton code (excuse-moi, hein ! Mais je vais essayé d'être constructif !!) ainsi que dans celui de "Rien_a_voir" proposer au début d'ailleur :
Vous faites deux fois de suite la même chose, A savoir, tirage d'un dé, calcul du gain. vous le fait une fois avec D et une seconde fois avec D2, mais cela augmentte le nombre de ligne de code pour pas grand chose ... C'est cette remarque qui a motivé la création d'un tampon mémorisant le dernier tirage dans mon code, afin de le comparer au tirage tout juste fait.
M'est avis que si tu présente une solution de ce genre à un prof, il te lourde !!!