zpalm a écrit : ↑06 mars 2022 22:37C.Ret a écrit : ↑06 mars 2022 21:12Quel est la ronde la plus importante que vous puissiez calculer ?
Sur HP-41C j’en suis à 98 élèves pour 64 pas de programme.
Ce doit être une HP-41C dopée en module mémoire ? Non ?
Il faut vraiment autant de pas de programme ?
Je vais voir ce que je peux faire : en attendant, voici le détail du code pour une Ti-58/Ti-58c. Les Ti-59 peuvent en faire autant, voir même plus.
Préparation:
Partitionner la TI-58c afin qu'elle puisse avoir une cinquantaine de registre mémoire par :
5 2nd OP 17
Elle affiche alors 79.49 pour indiquer qu'il y a jusqu'à 79 pas de programme et cinquante registre (de R00 à R49).
Code:
- MPO106 - TI-58c.gif (28.29 Kio) Vu 3746 fois
Utilisation:
Avant de saisir un nouveau tableau de données, faire 2nd CMS afin d'effacer le contenu de tous les registres.
Puis saisir le premier éléments du tableau et presser sur la touche utilisateur [ A ].
Le programme du Label A incrémente à chaque fois le registre R00 qui sert d'index. les éléments sont mémorisés dans les registres R01, R02, R03, ... jusqu'à R47; Les éléments suivants peuvent être indifféremment introduit en pressant à nouveau la touche A ou en les séparant d'une pression sur R/S.
Le calcul est lancé en pressant sur B. Après avoir distribué les bonbons et atteint une équirépartition, le nombre de cycle est affiché. Le registre t contient le nombre de bonbons identique. Une pression sur x:t permet de l'afficher.
Pour les Ti-59, on pourra choisir une répartition différente afin de pouvoir gérer une ronde contenant un plus grand nombre d'élèves. Mais il faudra aussi modifier le code afin d'utiliser des registres plus élevés pour remplacer respectivement R48 (qui contient le compteur de cycle) et R49 (où est sauvegardé le nombre d'élèves dans la ronde). Le registre test utilisé pour tester si tous les éléments ont une même valeur. C'est bien pratique, car t contient donc à la fin le nombre de bonbons que possède chaque élève à la fin des cycles.
principe de fonctionnement:
Test d'équirépartition: si un des éléments du tableau n'est pas égal à R01, alors le calcul du cycle suivant de partage des bonbons est lancé.
Partage des bonbons: Pour chaque élément i du tableau, la valeur CEIL(R(i+1)/2) est échangée avec le contenu du registre R(i). On calcul alors CEIL(R(i)/2) qui est ajouté à R(i). La valeur CEIL(R(i)/2) reste dans le registre d'affichage et sert de valeur d'échange pour le registre suivant.
En réalité, la boucle utilise Dsz, donc l'index R00 = i diminue. Donc, pour initialisé le calcul, je commence par calculer CEIL(R01/2) qui sera échanger avec le dernier élément du tableau....
Exemple:
2nd CMs 1 A 2 R/S 3 R/S 4 R/S 5 R/S B affiche 6 puis x:t affiche 6 en 0'48"6
et
2nd CMs 10 A 2 A 8 A 22 A 16 A 4 A 10 A 6 A 15 A 20 A B affiche 12 et x:t affiche 18 en 2'40"2