Page 1 sur 1
mon programme ne va pas plus loin que 9 et je veux 11
Publié : ven. 08/nov./2013 16:53
par mycleo
Code : Tout sélectionner
;--------------------------------------------------------------------------* Programme pour euro million *---------------------------------------------------------------------------
Dim tableau1(50)
Dim tableau2(12)
Dim tableau3(11)
Dim tableau4(11)
For a = 1 To 50
tableau1(a)=0
Next
For a = 1 To 12
tableau2(a)=0
Next
For a = 1 To 6
tableau3(a) = 0
Next
;EnableGraphicalConsole(1) ;Ouverture de la console en premier
If OpenConsole() ;Verification si la console est ouverte
ConsoleLocate(56, 34) ;x y position colonne range
EndIf
PrintN ("combien de combinaison ? ")
nbcomb$=Input()
nbcomb=Val(nbcomb$)
tableau4(1) = 0
tableau4(2) = 0
OpenConsole() ; Ouverture de la console en premier
ConsoleTitle ("* Euro million *") ; Titre de la fenetre
EnableGraphicalConsole(1) ;Mode graphique
For tt = 1 To nbcomb
For a = 1 To 50
tableau1(a)=0
Next
For a = 1 To 12
tableau2(a)=0
Next
For a = 1 To 5
tableau3(a) = 0
Next
ax$ = ""
tableau4(1) = 0
tableau4(2) = 0
ax$=""
cpt1 = 0
While cpt1 <> 5
num = Random(50 ) ; Renvoie une valeur entre 1 et 50, incluant 1 et 50
If tableau1(num) = 0 And num <> 0
tableau1(num) = num
cpt1 = cpt1 + 1
EndIf
Wend
For a = 1 To 2
cpt2=0
While cpt2 <> 2
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
While num=0
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
If tableau2(num) = 0 And num <> 0 And num < 12
tableau2(num) = num
cpt2 = cpt2 + 1
EndIf
Wend
Wend
Next
xx=0
For a = 1 To 50
If tableau1(a) <> 0
xx=xx+1
tableau3(xx) = a
EndIf
Next
yy=0
For a = 1 To 5
If tableau3(a) <> 0
Debug "tableau3(a) = : "+Str(a)+" "+Str(tableau3(a))
EndIf
Next
For a = 1 To 11
If tableau2(a) <> 0
yy=yy+1
Debug " yy = : "+Str(yy)
tableau4(yy) = a
EndIf
Next
For a = 1 To 5
ax$ = ax$ + " "
ax$ = ax$ + Str(tableau3(a) )
Next
ax$ = ax$ + " Etoile "
ax$ = ax$ + Str(tableau4(1))
ax$ = ax$ + " "
ax$ = ax$ + Str(tableau4(2))
PrintN (ax$ )
Next tt
;EnableGraphicalConsole(1) ;Ouverture de la console en premier
If OpenConsole() ;Verification si la console est ouverte
ConsoleLocate(56, 34) ;x y position colonne range
PrintN("Appuyez sur [Entree] pour quitter") ; impression du texte a l'ecran
Input() ; Atendre pour la reponse
EndIf
End

Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : ven. 08/nov./2013 17:42
par TazNormand
Bonjour
bon je me suis deja tapé ton code à remettre sans trop de tab, et comme j'ai un peu mal à la tête j'ai la flemme de chercher ce qui ne vas pas. Mais pourrais tu au moins nous dire ce qui ne te convient pas et ce que tu souhaites faire à la base ?
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : ven. 08/nov./2013 17:52
par Backup
mycleo a écrit :
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
non ! ça ne marche pas comme ça !
voir Doc a propos de Random()
extrait de la Doc :
Resultat = Random(Maximum [, Minimum])
Description
Renvoie un nombre aléatoire compris entre zéro et la valeur 'Maximum'
il eu fallut ecrire
Code : Tout sélectionner
num = Random(11,1) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
de plus .... lorsque je vois ça ,moi je part en courant
Code : Tout sélectionner
For a = 1 To 2
cpt2=0
While cpt2 <> 2
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
While num=0
num = Random(11) ; Renvoie une valeur entre 1 et 11, incluant 1 et 11
If tableau2(num) = 0 And num <> 0 And num < 12
tableau2(num) = num
cpt2 = cpt2 + 1
EndIf
Wend
Wend
Next
une boucle for next, + 2 boucle While-wend imbriqué .... hum , tu t'y retrouve ?
et que dire de :
c'est dantesque
je viens de tester ton code ... je me dis :
heu ... 100 ligne de codes pour faire ça ???

...... ha bon !
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : ven. 08/nov./2013 18:14
par TazNormand
@Dobro : C'est pour ça que je ne me suis même pas donné la peine de décortiquer son code, j'ai vraiment mal au crâne, mais avec son code, ça risque pas de s'arranger.
Je suppose qu'il veut faire un générateur de nombre pour Euromillions...
Ah la la !! D'abord poser sur "papier" ce que l'on veut, histoire d'avoir un algorithme potable, et après on code.
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : ven. 08/nov./2013 18:18
par Backup
ouaip

c'est clair
tiens mycleo ,comme exemple (pas optimisé en plus )
Regarde , et Apprends

tu vois qu'on peut faire plus court
pas besoin de tableau , ni de serie de if qui n'en finissent plus
Code : Tout sélectionner
;--------------------------------------------------------------------------* Programme pour euro million *---------------------------------------------------------------------------
If OpenConsole() ;Verification si la console est ouverte
ConsoleLocate(56, 34) ;x y position colonne range
ConsoleTitle ("* Euro million *") ; Titre de la fenetre
EnableGraphicalConsole(1) ;Mode graphique
EndIf
PrintN ("combien de combinaison ? ")
nbcomb$=Input()
nbcomb=Val(nbcomb$)
For i=1 to nbcomb
; tirage des numeros
for nu=1 to 5
num=random(50,1)
resut$=resut$+str(num)+","
Next nu
; tirage des etoiles
resut$=resut$+"--"
for nu=1 to 2
num=random(11,1)
resut$=resut$+str(num)+","
Next nu
resut$=left(resut$,len(resut$)-1)
printN (resut$)
resut$=""
Next i
x$=input(); EPB
autre façon de faire, sans utiliser la console
Code : Tout sélectionner
;--------------------------------------------------------------------------* Programme pour euro million *---------------------------------------------------------------------------
Declare.s generateur_euromillion(nombre) ; generateur_euromillion(nombre de grille)
nombre=val(InputRequester("Euromillion","combien de grille ?","1")); nombre de grille a generer
messagerequester("Resultat", generateur_euromillion(nombre) )
Procedure.s generateur_euromillion(nombre) ; generateur_euromillion(nombre de grille)
; By Dobro
For i=1 to nombre
; tirage des numeros
result$=result$+"Tirage numero "+str(i)+" -->"
for nu=1 to 5
num=random(50,1)
result$=result$+str(num)+","
Next nu
; tirage des etoiles
result$=result$+"--"
for nu=1 to 2
num=random(11,1)
result$=result$+str(num)+","
Next nu
result$=left(result$,len(result$)-1)
result$=result$+chr(10)+chr(13)
Next i
ProcedureReturn result$
Endprocedure
; EPB
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : sam. 16/nov./2013 14:37
par mycleo

Merci TazNormand et Dobro pour votre precieuse aide
en fait c'est vrai que je n'avais pas explique ce que je voulait vraiment faire mais vous avez pas mal decouvert ce que je voulais faire.
oui c'etait un programme pour generer des numeros pour loto q'un ami voulait
votre code etait tres tres bien mais moi j'avais fait un tableau pour 2 raisons une
pour qu'on n'ai pas de chiffre identique et pour avoir les chiffre en ordre , mais c'est
de ma faute je m'etais mal explique mais bon Merci avec ca ca m'a aide grandement c'etait pour les nombres aleatoire que je ne savait pas comment ca fonctionnait.
Felicitation encore a vous deux
Mycleo

Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : sam. 16/nov./2013 15:18
par Backup
mycleo a écrit :mais moi j'avais fait un tableau pour 2 raisons une
pour qu'on n'ai pas de chiffre identique et pour avoir les chiffre en ordre
ha oui , tu as raison , ben voici mon dernier code modifié (seulement la procedure a été modifiée)
pour tenir compte des doublons
et le tirage est trié du plus petit a gauche au plus grand
Ajout d'une Vraie Fenetre (laisse tomber le mode console

)
Code : Tout sélectionner
;--------------------------------------------------------------------------* Programme pour euro million *---------------------------------------------------------------------------
Declare.s generateur_euromillion(nombre) ; generateur_euromillion(nombre de grille)
Enumeration
#window
#editor
EndEnumeration
nombre=val(InputRequester("Euromillion","combien de grille ?","1")); nombre de grille a generer
OpenWindow(#window,10,10,800,600,"Euromillion",#PB_Window_SystemMenu )
EditorGadget(#editor,20,20,700,500)
SetGadgetText(#editor, generateur_euromillion(nombre))
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case #editor
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
Procedure.s generateur_euromillion(nombre) ; generateur_euromillion(nombre de grille)
; By Dobro
For i=1 to nombre
Newlist Numero_sorti()
Newlist Numero_etoile()
; tirage des numeros
result$=result$+"Tirage numero "+str(i)+" -->"
for nu=1 to 5
repete:
num=random(50,1)
if ListSize(Numero_sorti()) >1
ForEach Numero_sorti()
if Numero_sorti()=num
goto repete:
Endif
Next
Endif
AddElement (Numero_sorti())
Numero_sorti()=num
Next nu
SortList(Numero_sorti(), #PB_Sort_Ascending )
ForEach Numero_sorti()
result$=result$+str(Numero_sorti())+","
Next
; tirage des etoiles
result$=result$+"--"
for nu=1 to 2
repete2:
num=random(11,1)
if ListSize(Numero_etoile()) >0
ForEach Numero_etoile()
if Numero_etoile()=num
goto repete2:
Endif
Next
Endif
AddElement (Numero_etoile())
Numero_etoile()=num
SortList(Numero_etoile(), #PB_Sort_Ascending )
Next nu
ForEach Numero_etoile()
result$=result$+str(Numero_etoile())+","
Next
result$=left(result$,len(result$)-1)
result$=result$+chr(10)+chr(13)
FreeList(Numero_sorti())
FreeList(Numero_etoile())
Next i
ProcedureReturn result$
Endprocedure
; EPB
je te laisse ajouter un bouton pour relancer un nouveau tirage

Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : mar. 19/nov./2013 14:54
par mycleo

Un grand merci Dobro tu a fait un bon tavail et je vais bien etudier ton programme car je vois que j'ai beaucoup a apprendre et ton programme est sublime.
Merci mille fois Dobro
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : mar. 19/nov./2013 20:10
par graph100
faudrait peut-être mettre ce topic dans la bonne catégorie !
Re: mon programme ne va pas plus loin que 9 et je veux 11
Publié : mer. 20/nov./2013 18:52
par TazNormand
Changement de catégorie pour le topic
merci Graph100 pour la suggestion