Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Lun 13 Fév 2012, 15:03
J'ai pas tout regardez (long le programme^^) mais il y a quelques petites choses que tu peut améliorer.
Si il n'y a qu'une instruction après le if, pas besoin de then et donc pas besoin de end exemple :
If A=1 : Disp"A
Ensuite un A=0 peut etre remplacé par non(A
Pour lui dire d'afficher un texte avant une instruction pause tu peut mettre :
Pause "TEXTE
Ensuite, tu as dans ton programme (je ne met qu'une partie)
Code
:If A=G ou A=H ou A=I ou A=J ou A=K ou A=L
:[théta]+1->[théta]
:If B=G ou B=H ou B=I ou B=J ou B=K ou B=L
:[théta]+1->[théta]
Pourquoi ne pas tout faire en une seule fois?
Code
If A=G ou A=H ou A=I ou A=J ou A=K ou A=L ou B=G ou B=H ou B=I ou B=J ou B=K ou B=L : [Théta] +1 -> [Théta]
Ensuite, je ne reviendrais pas sur ce PUT...
Pour quand tu lui demande entre 1,2 ou 3 pourquoi ne pas mettre un codetouche?
Code
Repeat Z
CodeTouche -> Z
end
If Z=83 : Goto 0
If Z=82 : ...
If Z=84 : ...
Ensuite, 1000000 peut s'écrire E6 E s'obtient en faisant [2de] + [,]
Tu as mit :
Code
:6->B
:For(A,1,9
:Output(A,B,"S
:End
Pourquoi pas tout simplement
Code
:For(A,1,9
:Output(A,6,"S
:End
Code
:0->A
:Output(4,4,"
Peut se transformer en
Code
:EffVar AOutput(4,4," <-- collé
Je pense qu'il y a encore 2-3 amélioration possible mais la j'ai pas le temps. Sinon, ton programme à l'air pas mal je l'essayerais ce soir
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 13 Fév 2012, 18:51
Code
If [théta]=1
Then
Disp "1 CHIFFRE: 20
lSOUS(1)+20->lSOUS(1
End
If [théta]=2
Then
Disp "2 CHIFFRE: 50
lSOUS(1)+50->lSOUS(1
End
If [théta]=3
Then
Disp "3 CHIFFRE: 100
lSOUS(1)+100->lSOUS(1
End
If [théta]=4
Then
Disp "4 CHIFFRE: 500
lSOUS(1)+500->lSOUS(1
End
If [théta]=5
Then
Disp "5 CHIFFRE: 1000
lSOUS(1)+1000->lSOUS(1
End
If [théta]=6
Then
Disp "JAKPOT 1000000"
lSOUS(1)+1000000->lSOUS(1
End
Code
If [théta]=1
Disp "1 CHIFFRE:
If [théta]=2
Disp "2 CHIFFRE:
If [théta]=3
Disp "3 CHIFFRE:
If [théta]=4
Disp "4 CHIFFRE:
If [théta]=5
Disp "5 CHIFFRE:
If [théta]=6
Disp "JAKPOT 1000000"
{20,50,100,500,E3,E6->L1 // si tu es immaginatif en maths, tu peux trouver
// une formule qui remplace cette liste
If [thêta]-6
Output(7,12,L1([thêta]
lSOUS(1)+L1([thêta])->lSOUS(1
==========
Code
entAléat(1,46->G
entAléat(1,46->H
While H=G
entAléat(1,46->H
End
entAléat(1,46->I
While I=G ou I=H
entAléat(1,46->I
End
entAléat(1,46->J
While J=G ou J=H ou J=I
entAléat(1,46->J
End
entAléat(1,46->K
While K=G ou K=H ou K=I ou K=J
entAléat(1,46->K
End
entAléat(1,46->L
While L=G ou L=H ou L=I ou L=J ou L=K
entAléat(1,46->L
End
Code
entAléat(1,46->G
Repeat H-G
entAléat(1,46->H
End
Repeat I-G et I-H
entAléat(1,46->I
End
Repeat J-G et J-H et J-I
entAléat(1,46->J
End
Repeat K-G et K-H et K-I et K-J
entAléat(1,46->K
End
Repeat L-G et L-H et L-I et L-J et L-K
entAléat(1,46->L
End
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 364
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Lun 13 Fév 2012, 19:52
Ah, oui désolé pour le théta +1. Dans ce cas, tu peut mettre :
Code
:(A=G ou A=H ou A=I ou A=J ou A=K ou A=L) + (B=G ou B=H ou B=I ou B=J ou B=K ou B=L) + (C=G ou C=H ou C=I ou C=J ou C=K ou C=L) + (D=G ou D=H ou D=I ou D=J ou D=K ou D=L) + (E=G ou E=H ou E=I ou E=J ou E=K ou E=L)+ (F=G ou F=H ou F=I ou F=J ou F=K ou F=L -> [Théta]
Je crois que sa marche aussi. Dites le moi si je me trompe^^
Autorisation : Membre
Nb de messages : 118
Inscrit le : Dim 13 Nov 2011, 14:26
Posté le : Lun 13 Fév 2012, 22:04
J'ajoute que ceci
Citer : Snap
Code
:(A=G ou A=H ou A=I ou A=J ou A=K ou A=L) + (B=G ou B=H ou B=I ou B=J ou B=K ou B=L) + (C=G ou C=H ou C=I ou C=J ou C=K ou C=L) + (D=G ou D=H ou D=I ou D=J ou D=K ou D=L) + (E=G ou E=H ou E=I ou E=J ou E=K ou E=L)+ (F=G ou F=H ou F=I ou F=J ou F=K ou F=L -> [Théta]
Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 14 Fév 2012, 13:45
FAUX pour trois raisons :
- Il manque une acollade pour executer SomCum({a,b,c}) or tu n'utilise pas de liste dans SomCum
- SomCum ne sert pas du tout effectuer la somme de tous les termes.
L'exemple ci-dessus donnerait {a,a+b,a+b+c}
Il semble que tu veuilles rassembler les tests par l'algère booléen mais il y a des complications : là où il devrait y avoir un résultat booléen (0 ou 1) par série de "ou", la somme donnera un entier entre 0 et 6.
La solution est d'utiliser des fonctions "max".
Je compte ajoûter une remarque dans mon article TESTS pour éviter des confusions de ce type.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 1366
Inscrit le : Ven 25 Mar 2011, 22:58
Posté le : Mer 15 Fév 2012, 18:02
Je crois avoir trouvé quelques erreures:
Code
:Disp "VOUS AVEZ",lSOUS(1
:Imput "VOTRE MISE : //il manquerait pas la variable non? (A?)
Code
:entAléat(1,E2->Z
:EffEcr
:If Z<25
:Then
:Disp "VOUS ARRIVEZ","A CASSER LA","MACHINE ET","A VOUS BARREZ","AVEC LES TIMUS
:lSOUS(1)+50->lSOUS(1
:End
:If Z<75
:Then
:Disp "LE VIDEUR VOUS","FAIT LA PEAU","VOUS PERDEZ TOUS //ce serait pas plutôt TOUT ?
:0->lSOUS(1
:End
:If Z>74
:Disp "ON VOUS MET A LA","PORTE AVANT","MEME QUE VOUS","COMPRENNIEZ CE","QU4IL VOUS //ce serait pas une apastrophe à la place du 4?
:Pause "ARRIVE
Vérifie tes tests avec Z, ils ne sont pas très cohérents. (si tu casse la machine, t'es sur de tout perdre ; si on te met pas à la porte, le "ARRIVE" est quand même affiché
---------------------- mort à l'inutile, place à la mémoire libre et aux programmes
Autorisation : Membre
Nb de messages : 407
Inscrit le : Lun 07 Nov 2011, 12:09
Posté le : Mer 15 Fév 2012, 19:37
Autant pour moi
-Il manque bel et bien la variable A
-Quand j'ai retapé le prgm je me suis gouré dans la dispositions des testes (Et du pause
voila une version légèrement modifiée qui corrige l'erreur de fin
Code
:Lbl 0
:1->dim(lSOUS sert à créer la liste
Menu(">>>>>CASINO<<<<<","PILE OU FACE",1,"LOTO",2,"MACHINE A SOUS",3,"QUITTER",5
:Lbl 1
:If lSOUS(1)<1
:10->lSOUS(1
:Disp "VOUS AVEZ",lSOUS(1
:Imput "VOTRE MISE :",A
:If non(A ou A>lSOUS(1
:Then
:Pause "TU PEUX PAS
:Goto 0
:End
:lSOUS(1)-A->lSOUS(1
:Lbl 4
:EffEcr
:Disp "1: PILE","2: FACE","3:ARRETER
:Repeat K
:If K=94
:Then
:lSOUS(1)+A->lSOUS(1
:Goto 0
:End
:entAléat(1,2->C
:If K=C+91
:Then
:2A->A
:Disp "BRAVO
:Pause A
:Goto 4
:Else
:Pause "DOMMAGE
:Goto 0
:End
:Lbl 2
:EffEcr
:Disp "LE BILLET COUTE","50 TIMUS","1: ACHETTER","2: PARTIR
Repeat K
:If K=93
:Goto 0
:If 50>lSOUS(1
:Then
:Pause "ON Y CROIT
:Goto 0
:End
:lSOUS(1)-50->lSOUS(1
:EffEcr
:Disp "CHOISISSEZ 6","NOMBRES ENTRE","1 ET 46
:EffVar [Théta]Prompt A,B,C,D,E,F
:entAléat(1,46->G
:Repeat H-G
:entAléat(1,46->H
:End
:Repeat I-G et I-H
:entAléat(1,46->I
:End
:Repeat J-G et J-H et J-I
:entAléat(1,46->J
:End
:Repeat K-G et K-H et K-I et K-J
:entAléat(1,46->K
:End
:Repeat L-G et L-H et L-I et L-J et L-K
:entAléat(1,46->L
:End
:max(A={G,H,I,J,K,L})+max(B={G,H,I,J,K,L})+max(C={G,H,I,J,K,L})+max(D={G,H,I,J,K,L})+max(E={G,H,I,J,K,L})+max(F={G,H,I,J,K,L -> [Théta]
:EffEcr
:Disp G,H,I,J,K,L
:If non([théta]
:Disp "DOMMAGE"
:If [théta]=1
:Disp "1 CHIFFRE:
:If [théta]=2
:Disp "2 CHIFFRES:
:If [théta]=3
:Disp "3 CHIFFRES:
:If [théta]=4
:Disp "4 CHIFFRES:
:If [théta]=5
:Disp "5 CHIFFRES:
:If [théta]=6
:Disp "JAKPOT 1000000"
:{20,50,100,500,E3,E6->L1
:If [thêta]-6
:Output(7,12,L1([thêta]
:lSOUS(1)+L1([thêta]->lSOUS(1
:EffvarL1End
:Pause
:Goto 0
:End
:Lbl 3
:EffEcr
:Disp "CA COUTE 20TIMUS"," ","1: PAYER","2: PARTIR","3: PETER CETTE"," PUT... DE"," MACHINE
Repeat K
:CodeTouche -> K
:End
:If K=93
:Goto 0
:If K=92
:Then
:EffEcr
:If 20>lSOUS(1
:Then
:Pause "ET AVEC QUOI?
:Goto 0
:End
:lSOUS(1)-20->lSOUS(1
:For(B,1,16
:Output(1,B,"S
:End
:For(A,1,8
:Output(A,16,"S
:End
:For(B,16,1,-1
:Output(8,B,"S
:End
:For(A,8,1,-1
:Output(A,1,"S
:End
:For(A,1,8
:Output(A,6,"S
:End
:For(A,1,8
:Output(A,11,"S
:End
:EffVar AEffVarT5->B
:10->C
:Repeat T=105
:codeTouche->T
:A+1->A
:If A=21
:EffvarAOutput(4,4,"
:Output(4,3,A
:entAléat(1,10^99
:End
:Repeat T=105
:codeTouche->T
:B+1->B
:If B=21
:EffVar BOutput(4,9,"
:Output(4,8,B
:entAléat(1,10^99
:End
:Repeat T=105
:codeTouche->T
:C+1->C
:If C=21
:Effvar COutput(4,14,"
:Output(4,13,C
:entAléat(1,10^99
:End
:Pause
:If A=B et A=C
:Then
:EffEcr
:lSOUS(1)+10000->lSOUS(1
:Disp "VIVE LE BLE","VOUS GAGNEZ
:Pause "10 000 TIMUS
:Else
:Pause "DOMMAGE
:End
:Goto 0
:End
:If K=94
:Then
:entAléat(1,E2->Z
:EffEcr
:If Z<75 et Z>=25
:Then
:Disp "LE VIDEUR VOUS","FAIT LA PEAU","VOUS PERDEZ TOUT
:0->lSOUS(1
:End
:If Z<25
:Then
:Disp "VOUS ARRIVEZ","A CASSER LA","MACHINE ET","A VOUS BARREZ","AVEC LES TIMUS
:lSOUS(1)+50->lSOUS(1
:End
:If Z>74
:Disp "ON VOUS MET A LA","PORTE AVANT","MEME QUE VOUS","COMPRENNIEZ CE","QU'IL VOUS","ARRIVE
:Pause
:Goto 0
:End
:Lbl 5
:EffEcr
:Output(8,9,"CYTROPUS
Merci pour votre aide ça fait gagner pas mal de place
Merci snap pour avoir recopier entièrement ça à dû prendre du temps
Seul défaut auquel je n'ai pas remédier, si tu laisse la machine à sous tourner pendant longtemps ça ralentit (attention à l'erreur mémoire )
Consulte mon article GOTO pour en savoir un peu plus.
La solution parfois la plus simple est de n'utiliser aucune boucle.
Une autre est de chercher des algorithmes dans lesquels les boucles ne contiennent pas de Goto.
Remplace mon premier exemple par ceci : (cela fait gagner du répit)
Code
:If A=B et A=C
:Then
:EffEcr
:lSOUS(1)+10000->lSOUS(1
:Disp "VIVE LE BLE","VOUS GAGNEZ
:Pause "10 000 TIMUS
:Else
:Pause "DOMMAGE
:End
:Goto 0 // cette extraction évite d'empêcher la fermeture de la boucle Then
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)