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
:oops:

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 :

Code : Tout sélectionner

 If  tableau2(num) = 0   And num <> 0      And num < 12
c'est dantesque :lol:

je viens de tester ton code ... je me dis :
heu ... 100 ligne de codes pour faire ça ??? 8O ...... 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 :D
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
:D 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 :lol:

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 :lol: )

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