Autorisation : Membre
Nb de messages : 101
Inscrit le : Jeu 02 Jui 2011, 15:17
Posté le : Dim 29 Juil 2012, 0:45
Salut à tous, voici un petit programme qui se nomme noël /oui je sais on est pas en hiver mais bon, ya pas de saison pour les programmes/ et qui consiste à afficher des flocons de neiges qui tombent... Je vous laisse apprécier.
Nom: Noël
Taille: 342 octets
Auteur: S.L
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Dim 29 Juil 2012, 17:48
Oulà ! L'idée et sympa mais niveau optimisation c'est un massacre !
Utilise une liste au lieu des variables et une chaîne pour les caractères:
Output(A,L1(X),sous-Chaîne(Chaîne1,entAléat(1,3))
Avec Chaîne1 = "espace étoile point".
Sûr qu'il peut prendre trois fois moins place !
J'ai essayer ! Pas mal sinon
Autorisation : Membre
Nb de messages : 369
Inscrit le : Dim 13 Fév 2011, 14:17
Posté le : Lun 30 Juil 2012, 0:03
Voila, j'ai mis les variables sous forme de liste, mais je n'ai pas utilisé les chaînes, je ne voyait pas l'intérêt. J'arrive à sa :
Code
{1,4,2,8,3,6,4,12,5,9,6,3 -> L1
Repeat M=45 ou M=105
For(Z,1,11,2
1+L1(Z -> L1(Z
End
Effecr
For(Z,1,9,4
Output(L1(Z),L1(Z+1),"*
Output(L1(Z+2),L1(Z+3),"-
End
For(Z,1,11,2
If 8=L1(Z : Z+1 -> W
End
If W : Then
1 -> L1(W-1
entaléat(1,16 -> L1(W
End
codeTouche -> M
End
Disp"JOYEUX NOEL!
Pause
Effecr
Output(1,1,"
J'ai pas testé ton programme de départ, la flemme de recopier (désolé ^^) donc si sa va moins vite ou si c'est pas pareil, dit le moi je saurais quoi changer.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 18 Sep 2012, 22:06
Quel type d'erreur ? syntaxe ?
Le début de la ligne doit être faux. L1 se saisi avec 2nde+1 , et les parenthèses/virgules doivent être correctement placées.
---------------------- 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 : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 06 Nov 2014, 21:00
W est fausse. Par exemple elle donne une valeur de position qui dépasse de la liste.
Saisis {W,Z,M} dans l'écran de calcul pour connaître les valeurs des trois variables. Ensuite nous pourrons chercher la cause en connaissant complètement le symptome.
---------------------- 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)
Je viens ici car j'ai le même problème que Thunderbolt et comme je ne m'y connaît pas beaucoup en TI, je voudrais savoir comment résoudre cette erreur.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 16 Nov 2014, 16:56
La valeur de W est incohérente avec la liste L1. Nous devons chercher pourquoi.
J'ai déjà demandé d'examiner les variables, mais sans réponse, alors cette fois j'interprète le code moi-même. (mais pas envie de le tester)
Je pense qu'un End est mal placé. Ma correction ci-dessous. EDIT:16/11/2014 22heures : je modifie encore : retiré le test juste avant l'ancien End faux et modifié la suite pour adapter.
Code
// version optimisée par snap
// corrigée par linkakro
{1,4,2,8,3,6,4,12,5,9,6,3 -> L1
Repeat M=45 ou M=105
For(Z,1,11,2
1+L1(Z -> L1(Z
End
EffEcr
For(Z,1,9,4
Output(L1(Z),L1(Z+1),"*
Output(L1(Z+2),L1(Z+3),"-
End
For(Z,1,11,2
/////////////// Le test ici était incohérent avec sa place, je le retire.
/////////////////// Le End ici était faux.
If 8=L1(Z ///// L1(Z
Then
1 -> L1(Z ///// L1(Z
entaléat(1,16 -> L1(Z+1 ///// L1(Z+1
End
End ////////////// le End ici est ajouté
codeTouche -> M
End
Disp"JOYEUX NOEL!
Pause
Effecr
Output(1,1,"
---------------------- 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 : 5
Inscrit le : Dim 16 Nov 2014, 15:15
Posté le : Dim 16 Nov 2014, 18:45
J'ai ce que tu as dis linkakro (je suis "un inconnu") j'ai eu comme résultat {1 13 1}
Je viens de tester ta version, mais toujours le même problème :/
Merci de ton aide
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 16 Nov 2014, 22:12
J'ai corrigé ce qui était incohérent en modifiant mon message précédent. Pour y parvenir j'ai comparé les deux programmes précédents pour tenter de deviner le raisonnement de snap.
---------------------- 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 : 5
Inscrit le : Dim 16 Nov 2014, 15:15
Posté le : Dim 16 Nov 2014, 23:26
Ça marche enfin
Merci linkakro \o/
adrien41 Invité
Posté le : Ven 02 Jan 2015, 10:49
Salut à tous. J'ai eu une idée mais je ne sais pas comment faire: faire en sorte que le message puisse s'afficher sur l'écran en appuyant sur entrer et que la "neige" tombe en même temps. Merci d'avance à ceux qui auront une idée.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 02 Jan 2015, 19:48
La touche entrer est déjà détectée avec la valeur 105 de la variable M.
Utilise une variable supplémentaire pour mémoriser que la touche a été pressée au moins une fois et affecte la avec une condition M=105. Retire la condition M=105 de la boucle Repeat afin de ne pas quitter avec entrer. Puis déplace le texte dans la boucle et soumet le à une condition sur la variable mémoire ajoutée précédemment.
Code
//basée sur la version de snap et linkakro
0->N // mémoire ajoutée
{1,4,2,8,3,6,4,12,5,9,6,3 -> L1
Repeat M=45 // la touche annul seule
For(Z,1,11,2
1+L1(Z -> L1(Z
End
EffEcr
If M=105 // touche entrée au tour précédent
1->N
If N // touche entrée au moins une fois (N non nul)
Disp "JOYEUX NOEL! // message
For(Z,1,9,4
Output(L1(Z),L1(Z+1),"*
Output(L1(Z+2),L1(Z+3),"-
End
For(Z,1,11,2
If 8=L1(Z
Then
1 -> L1(Z
entaléat(1,16 -> L1(Z+1
End
End
codeTouche -> M
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 : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 03 Jan 2015, 12:28
Mon test fonctionne parfaitement. Donc si tu as effectivement un problème j'aurais besoin d'une description plus précise pour tenter de deviner une erreur de ta part.
Vérifie aussi le Repeat.
Ou bien ta demande initiale est ambiguë. J'interprète que la neige tombe déjà avant la pression sur la touche entrer. Tandis que tu voulais peut-être désigner la simultanéité entre le message et la chute.
Citer
faire en sorte que le message puisse s'afficher sur l'écran en appuyant sur entrer et que la "neige" tombe en même temps.
Si tu veux appuyer sur entrer pour commander le démarrage du programme au lieu de seulement le message alors une pause au début du programme suffira.
Code
Pause // la pause, mais la neige ne tombe pas en même temps
{1,4,2,8,3,6,4,12,5,9,6,3 -> L1
Repeat M=45
For(Z,1,11,2
1+L1(Z -> L1(Z
End
EffEcr
Disp "JOYEUX NOEL! // le message dans tous les cas
For(Z,1,9,4
Output(L1(Z),L1(Z+1),"*
Output(L1(Z+2),L1(Z+3),"-
End
For(Z,1,11,2
If 8=L1(Z
Then
1 -> L1(Z
entaléat(1,16 -> L1(Z+1
End
End
codeTouche -> M
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)
En fait,pour etre plus clair,voici comment j'aurais voulu que le prgm fonctionne:
-ouverture
-la neige tombe
-tu appuie sur une touche
-"JOYEUX NOEL!" apparait et la neige tombe en meme temps
-tu rappuie sur la touche
-le message s'efface et la neige tombe
If K=105
non(N->N // non(1)=0 et non(0)=1
If N
Disp "JOYEUX NOEL!
For(Z,1,9,4
Output(L1(Z),L1(Z+1),"*
Output(L1(Z+2),L1(Z+3),"-
End
For(Z,1,11,2
If 8=L1(Z
Then
1 -> L1(Z
entaléat(1,16 -> L1(Z+1
End
End
codeTouche -> M
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)