ERREUR

FeelCode Messages postés 278 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 27 avril 2006 - 18 avril 2004 à 17:49
jcrashmen Messages postés 14 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 27 février 2005 - 26 févr. 2005 à 18:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22052-erreur

jcrashmen Messages postés 14 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 27 février 2005
26 févr. 2005 à 18:26
j'aimerais développé un logiciel qui permet a partir de 21 chiffres de générer toutes les combinaisons possible a 6 chiffres sans avoir 2 nombres identique , une idée ?
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
11 févr. 2005 à 21:02
Ce code est nul et indéfendable ...
1 est la note qu'il mérite.
C'est le premier prog que j'ai fait en VB.NET, il y a de ca tres tres tres longtemps ^^
cs_Ulmo Messages postés 24 Date d'inscription samedi 14 février 2004 Statut Membre Dernière intervention 3 avril 2006
19 mai 2004 à 23:05
Pas trés optimiser tout ça !!
J'ai fais un autre générateur mais y un label au lieu de 10 textbox :


Dim N(10) As Integer 'Déclaration du tableau
Dim i As Integer
Dim r As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Text = ""
For i = 1 To 10
N(i) = Rnd() * 49
For r = 1 To i 'Vérification pour voir si le nb est dja pris
If N(i) N(r) Then N(i) Rnd() * 49
Next
Label1.Text = Label1.Text & " " & N(i)
Next
End Sub
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 avril 2004 à 15:59
Re TOM_KILLERz,
Tu prends un Text1 et tu mets à true la propriete MultiLine.
Apres tu utilises la constante vbNewLine qui permet de faire un retour de ligne.
Exemple :
Text1.Text = Text1.Text & vbNewLine & CStr(Num_Hasard)
Les resultats seront alignés verticalement dans une TexBox.
A+, Nocturne
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
19 avril 2004 à 11:42
Lol ok très bien ;-)
Et sinon ta une technique pour afficher les resultats dans une textbox ?
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 avril 2004 à 11:30
Ca marche avec ton C6 = Rnd() * 48 + 1. Mais dans mon cas ca marche egalement avec 49, Int(Rnd(1) * 49) + 1 car Int va arrondir a l'unité inferieur donc le chiffre max sera de 48, a cela on ajoute 1 pour 49
Voila l'explication. Donc nous avons raison tous les 2.
A+ et bonne prog
cs_Basica Messages postés 18 Date d'inscription samedi 11 mai 2002 Statut Membre Dernière intervention 28 octobre 2005
19 avril 2004 à 10:32
Putain ca cartonne!
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
19 avril 2004 à 10:17
Euh par contre avec la derniere source que ta fait comment peut on metre le resultat dans des textbox sans passer par la MessageBox ?
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
19 avril 2004 à 10:15
Euh par contre avec la derniere source que ta fait comment peut on metre le resultat dans des textbox sans passer par la MessageBox ?
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
19 avril 2004 à 09:59
Je pense que tu te trompe étant donné qu'avec mon C6 = Rnd() * 48 + 1
j'ai eu plusieurs fois le chiffre 49 (essaye lexecutable fourni avec le zip tu verra).

Bon je vais aller voir ta source
Merci pour tout ;-)
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 avril 2004 à 01:00
Je viens de retrouver mon vieux code source de 2001.
Tu peux le trouver : http://www.vbfrance.com/code.aspx?ID=22070
A+, Nocturne
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
19 avril 2004 à 00:34
Je ne suis pas sur avec ton explication concernant Int(Rnd(1) * 48) + 1
La fonction Rnd renvoie une valeur inférieure à 1 donc elle ne sera jamais à 1.
La fonction Int renvoie le premier entier inférieur ou égal au nombre.
Ce qui nous donne avec exemple Rnd = 0,99999:
Int(0,99999 * 49) + 1 soit Int(48,99951) + 1 soit 48 + 1 = 49 chiffre maxi. Mon operation est donc correcte.
Avec ton Int(Rnd(1) * 48) + 1, tu n'auras jamais le chiffre 49.
Si je me trompe, faite le moi savoir.
A+, Nocturne
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
18 avril 2004 à 23:21
Ta source marche parfaitement
Mais il y a une petite erreur :

Int(Rnd(1) * 49) + 1 alors que ca doit etre Int(Rnd(1) * 48) + 1
Mais je chipote, ta source tourne parfaitement ...
Encore merci @ toi
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
18 avril 2004 à 22:14
Yes mci Nocturne
Je vais tester ca ...

@+ et encore merci ^^
cs_Nocturne Messages postés 115 Date d'inscription mardi 26 février 2002 Statut Membre Dernière intervention 15 novembre 2007
18 avril 2004 à 22:10
Salut TOM_KILLERz,

Je viens de faire vite fait ce petit code pour toi.
Cette exemple tire 10 chiffres au hasard avec une verification pour que le nombre ne soit pas tiré deux fois de suite

Dim Num_Hasard As Integer
Dim Stockage_Nombre()
Dim Nombre_Deja_Tire As Boolean, Tirage_1er_Chiffre As Boolean
Dim x As Integer, y As Integer
Dim Visu_Total_Nombre As String

Tirage_1er_Chiffre = False
For x = 1 To 10 'Nombre de chiffre à tiré
Randomize 'Inizialise la fonction Rnd
Num_Hasard = Int(Rnd(1) * 49) + 1 'Tirage du chiffre
Nombre_Deja_Tire = False
If Tirage_1er_Chiffre = False Then 'Enregistrement du 1er chiffre
ReDim Preserve Stockage_Nombre(0)
Stockage_Nombre(0) = Num_Hasard
Visu_Total_Nombre = CStr(Num_Hasard)
Tirage_1er_Chiffre = True
Else
For y = 0 To UBound(Stockage_Nombre)
If Num_Hasard = Stockage_Nombre(y) Then 'Controle que le chiffre ne soit pas déjà enregistré
Nombre_Deja_Tire = True
End If
Next y
If Nombre_Deja_Tire = False Then 'Controle que le chiffre ne soit pas déjà enregistré
ReDim Preserve Stockage_Nombre(UBound(Stockage_Nombre) + 1)
Stockage_Nombre(UBound(Stockage_Nombre)) = Num_Hasard 'Enregistrement du chiffre tiré au hasard
Visu_Total_Nombre = Visu_Total_Nombre & vbCr & CStr(Num_Hasard)
Else
x = x - 1 'Permet de faire une boucle supplementaire si le chiffre à déjà été enregistré
Nombre_Deja_Tire = False
End If
End If
Next x
MsgBox (Visu_Total_Nombre) 'Visualisation des 10 chiffres

J'avais déjà fait un code source tirage du loto en 2001 a mes debut en programmation, si je retrouve la source, je la mettrais sur le site de VbFrance.
A+ et bonne prog.
Nocturne
TOM_KILLERz Messages postés 37 Date d'inscription mercredi 25 février 2004 Statut Membre Dernière intervention 4 mai 2005
18 avril 2004 à 19:59
Bon deja merci de ne pas avoir noté ...
Mais comment tu fait avec cette technique

1. avoir un nombre ENTIER
2. ne pas avoir deux nombres pareils

Les 100 lignes de codes que j'ai fait sont surtout pour réunir ces deux conditions ...

Mais merci pour les idees proposées ;-)
FeelCode Messages postés 278 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 27 avril 2006 1
18 avril 2004 à 17:49
C est quoi ce binz lol ?

tu peux faire beaucoup plus simple
mai je te donne seulment des indices c est ton projet pas le mien dac [;)]
corige le code car le mien est pas juste c est pour t'expliquer.

1 tu fait une fonction qui renvoiye le chifre aleatoire genre:
public /private fonctionaleatoire() as byte
randomiz
fonctionaleatoire=Rnd() * 48 + 1
end function

ensuite tu place 1 seul control sur ta form et tu mai l'index a 0
tu charge ton group de controle grace a load ton control evidament il va faloir les positionner pare le code sur ta form

Ensuite une boucle dans l'evenement clique de ton bouton generer
dim I as byte
for I = 0 to nombre de control
moncontrol(I).text=fonctionaleatoire
next I

pour le form load j'ai pas la syntax sous la souris
vala sa devrai te prendre 25 ligne de code a tout casser et pas 100 ligne dans ton code ici mai bon on debute tous je te mai pas de note ;D
Rejoignez-nous