Condition variable = une des valeurs de liste ? |
Auteur |
Message |
OtaKiller
Invité
|
Posté le : Mar 22 Sep 2015, 20:39
|
|
|
Bonjour, je suis nouveau et sur le forum et en TI-Basic et je souhaiterai savoir comment faire pour savoir si une variable est égale a une des valeurs d'une liste. En gros je souhaiterai faire: If a=L1(1) OU a=L1(2) OU etc... sauf que dans mon programme des valeurs s'ajoutent sans cesse à la liste donc il je voudrait eviter de devoir faire If a=L1(1)......a=L1(999)
|
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Mar 22 Sep 2015, 21:00
|
|
|
C'est un coup un prendre. Voilà le code (je vais t'expliquer) :
A=L1 crée une liste de test qui est remplie de 0 au rang N lorsque L1(N) est différent de A, et de 1 lorsque L1(N)=A.
On teste si le maximum de cette liste est positif (sous entendu, logique booléenne) avec le test If max(A=L1).
Tu peux regarder ce code étapes par étapes pour mieux comprendre le principe.
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|
OtaKiller
Invité
|
Posté le : Mar 22 Sep 2015, 23:20
|
|
|
Donc si j'ai bien compris avec ce code; si par exemple a=3 et ma liste L1 est {2,7,9,3,4} (au moment du test pour la condition) créera une liste {0,0,0,1,0} puis additionnera toutes les valeurs (donc ici 1) et s'il est positif la condition est validée sinon elle ne s’exécute pas ?
|
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Mer 23 Sep 2015, 7:13
|
|
|
You got it !
Fonctionne aussi avec sum() (la somme des valeurs de la liste de test)
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|
OtaKiller
Invité
|
Posté le : Mer 23 Sep 2015, 9:33
|
|
|
Merci, le problème maintenant est que je veux empêcher un point d'atteindre certaines coordonnées mais celles si sont générées aléatoirement a chaque boucle de GetKey.
Sauf que si je fais IF x=a ET y=b la conditions n'est validée que pour le dernier point qui s'est crée dans la boucle et pas ceux qui l'ont été dans les precedentes. J'ai donc essayé de compiler les cordonnées dans 2 listes (une pour, une pour b) et de faire IF max(x=L1 ET max(y=L2mais du coup la condition est valide si mon point se trouve sur la ligne d'un des points crées et la colonne d'un autre (exemple: a(0,3) b(3,6) la condition est validée pour (0,6) alors qu'aucun point n'y figure).
Y'a t'il donc un moyen de contourner ce problème, par exemple rentrer des coordonnées dans une liste ou autre ?
|
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Mer 23 Sep 2015, 19:22
|
|
|
Je ne suis pas sur d'avoir tout compris. Je résume :
Un point par tour est interdit, et le test d'interdiction doit se faire uniquement sur ce point.
Voilà ce que je te propose pour faire simple.
Code | Repeat Ans
getkey
randInt(1,95->A
randInt(1,63->B
End
// pour le getkey, c'est le plus simple. Tu peux remplacer Ans par K si tu réutilises la valeur
If prod({X,Y}={A,B
... |
Le produit simule le booléen ET, tandis que sum/max simule le booélen OU.
Je te conseille cet excellent article de Linkakro pour en savoir plus : http://tout82.free.fr/forum/sujet.php?sujet=2741
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|
Google_AdSense
|
Publicité
|
|
|
|
|
OtaKiller
Invité
|
Posté le : Mer 23 Sep 2015, 21:54
|
|
|
Hélas non, je n'ai pas été assez clair dsl: un point interdit est créé par boucle et le test d'interdiction doit se faire sur tout les points interdits existants...
|
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Mer 23 Sep 2015, 22:17
|
|
|
Oh damn, tu t'en sortira jamais...
Les listes sont bloquées à 99 valeurs, tu pourras jamais faire le tour de l'écran.
Je te conseille plutôt un pxlTest(X,Y), si tu traces un point sur chaque pixel interdit.
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|
m@thieu41
Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
|
Posté le : Jeu 24 Sep 2015, 20:58
|
|
|
On est a 999 pour la taille max d'une liste si la mémoire le permet
---------------------- Pour vous aidez dans vos débuts (et même ensuite ^^) :
*Tuto Algo->Ti Basic (par Linkakro) : Traduisez vos algo (de type algobox) en prgm pour votre TI!
*Catalogue des emplacements et traductions (anglais/français) des fonctions sur la TI.
*Faites vos propres programmes de maths (par ash)
Et au fait: la politesse n'a jamais tué personne |
|
|
|
Mingerton
Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
|
Posté le : Jeu 24 Sep 2015, 21:40
|
|
|
Euh oui. Mais bon, si la variable fait cette taille, il peut même plus lancer son programme ^^
Le pxlTest reste la meilleure idée je pense. Si t'as besoin d'explications n'hésite pas
---------------------- Mes articles
Mes programmes en ligne (je termine peu de projets)
Guide traduction Algo-Basic, par Linkakro
Catalogue des fonctions 82/83/84 FR/EN |
|
|
|