Page 1 sur 1

Compter nombre d'apparition

Posté : 21 déc. 2017, 12:10
par GlenS
Bonjour,

Je fais appel à la communauté pour m'aider dans une application (je ne gère pas bien les pointeurs).

Dans mon exemple :
Je génère un nombre entre 0 et 49 dans mon DB1.DBW0.
1) Je souhaite compter combien le nombre de fois que sort chaque nombre compris entre 0 et 49 (cf "Image1").
Comment puis-je simplifier mon code plutôt que d'écrire 50 lignes ? Et savoir dans mon tableau DB2 que le 1 est sorti X fois, le 2 Y fois, ... le 49 Z fois.
2) Je souhaite ensuite récupérer les valeurs de mon DB2 et trier tout ça (dans un DB3) en classant les nombres (0à49) qui sont sorties par ordre décroissant.
Any help ?

Attention contrainte : je ne veux pas utiliser le SCL.

Merci pour votre aide.

Re: Compter nombre d'apparition

Posté : 21 déc. 2017, 17:36
par djé
Salut,
Tu joues au loto? :)
Sans SCL, tu n'auras pas d'autre choix que de passer par du LIST pour faire de l'indexage:

Je ne vais pas te faire le code de l'ensemble mais voici un exemple pour utiliser un index sur une DB de 50 mots (DB1.DBW0 à DBW98):
admettons que la valeur du tirage entre 0 et 49 est MW0 et que celle-ci est une nouvelle valeur à prendre en compte.

Code : Tout sélectionner

// On crée ici l' index à partir de MW0 :
L 0
L MW0
<= i
SPBN FIN: Saut si MW0 est inférieur à 0 
SLW3    //  (on fait un décalage de 3 pour remettre au format disons octet, sinon tu vas adresser des bits)
L 2 
*I           //  (on multiplie par 2 pour pouvoir adresser des mots: sinon tu adresses les octets, la table va de DBW0 à DBW98)

LAR1 // transfert la valeur dans le registre de décalage AR1
// à partir de là le pointeur est créé

AUF DB1 // ouverture de la DB1
L DBW [AR1,P#0.0] // chargement de la valeur compteur du Xième mot de la table  (x=MW0)
L 1
+i   //on rajoute 1
T DBW [AR1,P#0.0] on retransfert dans le compteur
l -1
T MW0 // on met -1 dans MW0 qui sera réécrit plus tard lors du prochain tirage
FIN: NOP 0 // on fait rien

Re: Compter nombre d'apparition

Posté : 21 déc. 2017, 20:38
par GlenS
Hello djé,

Oui c'est exactement ça :) . Je me suis donné l’exercice de refaire le tirage du loto mais pas en SCL sinon c'est plus facile.
((à la base c'était de créer un tirage aléatoire qui m'a poussé à faire ça et maintenant que c'est fait, je veux aller plus loin))

Ton développement va mettre utile ! C'est exactement ça qui va me débloquer : un exemple que je vais pouvoir appliquer à mon exo.
J'ai saisi le résonnement, merci de ton aide !! ;)

@+ sur la toile