khedidija
Messages postés33Date d'inscriptionsamedi 16 février 2008StatutMembreDernière intervention11 mai 2011
-
10 avril 2008 à 22:16
khedidija
Messages postés33Date d'inscriptionsamedi 16 février 2008StatutMembreDernière intervention11 mai 2011
-
14 avril 2008 à 14:17
salut!
je dois faire un programme qui converte les décimaux en binaire avec une boucle inconditionnelle.mais mon souci c'est que une fois que j'éxécute mon programme ça n'arrête pas .voilà mon mon code,qui peut me dire ou est le problème? et merci à priori.
=============================
Private Sub Command1_Click()
Dim bin, nbre, result, rest, dev As Double
bin = " "
nbre = Text1
While result > 0
result = nbre \ 2
rest = nbre Mod 2
result = Fix(nbre \ 2)
Wend
bin = rest + bin
Label1.Caption = bin
End Sub
============================
merci à priori
khedidija
Messages postés33Date d'inscriptionsamedi 16 février 2008StatutMembreDernière intervention11 mai 20112 14 avril 2008 à 14:17
merci les amis grâce à vous proposition j'ai pu résoudre mon prolblème donc voilà le bon code ça marche 100% bien
====================
Private Sub Command1_Click()
Dim n, digit As Integer
Dim bin As String
n = text1
If n > 0 Then
Do While n <> 0
digit = n Mod 2
n = n \ 2
bin = digit & bin
Loop
Text2.Text = bin
Else
MsgBox ("Nombre négatif pas accepté !")
End If
End Sub
============================
et merci beaucoup pour votre soutien.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 avril 2008 à 22:25
fait le test.
Prend n'importe qu'elle valeur pour nbre par exemple 14 (au pif) et parcours manuellement sur le papier plusieurs fois ta boucle en notant à chaque étapes les valeurs de chacune des variables.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 10 avril 2008 à 22:47
Salut,
Forcément que ca boucle à l'infini => la fonction "/" tend vers le 0 infini, et n'atteinds jamais le 0 absolu...
Donc ta condition :
While result > 0
n'est jamais remplie !
De plus :
Dim bin, nbre, result, rest, dev As Double
Cela veut dire que seul dev est un double ! Toutes les autres variables sont des variant !!! Ce qui est beaucoup plus lents à utiliser, et ne sert strictement à rien : pour la décomposition en binaire, seul les nombres entiers sont utilisés, donc déclare les en long !
______________________________________
DarK Sidious
khedidija
Messages postés33Date d'inscriptionsamedi 16 février 2008StatutMembreDernière intervention11 mai 20112 11 avril 2008 à 01:13
salut!
merci les amis
mais voilà j'ai pu trouvé une solution pour sortir de l'infini mais je n'obtiens que 1 n'importe quel soit le nombre donné
voilà le nouveau code :
================
Private Sub Command1_Click()
Dim nbre, result, rest, dev As Integer
Dim bin As String
bin = 0
nbre = Text1.Text
If nbre > 0 Then
Do While result > 0
rest = nbre Mod 2
bin = rest + bin
nbre = nbre \ 2
Loop
Else
MsgBox ("Nombre négatif pas accepté !")
End If
Label1.Caption = bin
End Sub
========================
et quand je déclare as double ça ne donne que 0!
alors svp aidez moi ça me gène
bricoyeye
Messages postés326Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention29 avril 20082 11 avril 2008 à 09:14
Salut,
Do While result > 0
rest = nbre Mod 2
bin = rest + bin
nbre = nbre \ 2
Loop
tu n'as donné aucune valeur à result avant ta boucle, donc il est à 0, la boucle ne ce fait pas, et la valeur de bin est celle que tu lui a donnée plus haut.
If nbre > 0 Then
result = ???
Do While result > 0
rest = nbre Mod 2
bin = rest + bin
nbre = nbre \ 2
result = ????