Poster un nouveau sujet Poster une réponse
Condition variable = une des valeurs de liste ?
Auteur Message
OtaKiller
Invité
Posté le : Mar 22 Sep 2015, 20:39   Citer 

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)

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mar 22 Sep 2015, 21:00   Citer 

C'est un coup un prendre. Voilà le code (je vais t'expliquer) :

Code
If max(A=L1


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
 Adresse email Haut de page Bas de page 
 
OtaKiller
Invité
Posté le : Mar 22 Sep 2015, 23:20   Citer 

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 ?

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mer 23 Sep 2015, 7:13   Citer 

You got it ! winkle.gif

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
 Adresse email Haut de page Bas de page 
 
OtaKiller
Invité
Posté le : Mer 23 Sep 2015, 9:33   Citer 

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 ?

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mer 23 Sep 2015, 19:22   Citer 

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
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
OtaKiller
Invité
Posté le : Mer 23 Sep 2015, 21:54   Citer 

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...

  Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Mer 23 Sep 2015, 22:17   Citer 

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
 Adresse email Haut de page Bas de page 
 
m@thieu41



Autorisation : Membre
Nb de messages : 856
Inscrit le : Mer 18 Juil 2012, 18:44
Posté le : Jeu 24 Sep 2015, 20:58   Citer 

On est a 999 pour la taille max d'une liste si la mémoire le permet winkle.gif

----------------------
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 winkle.gif
 Adresse email Haut de page Bas de page 
 
Mingerton



Autorisation : Membre
Nb de messages : 504
Inscrit le : Ven 07 Déc 2012, 20:09
Posté le : Jeu 24 Sep 2015, 21:40   Citer 

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 winkle.gif

----------------------
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
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink