hp 41cx au pluriel

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

hp 41cx au pluriel

Message par tyann »

Bonjour à tous

Il y a quelques temps en travaillant sur un petit programme pour ma 41cx
je me suis retrouvé avec le besoin d'ajouter ou non un "S" à la fin de certains messages.
Du style "RESTE x ESSAI(S)" ou encore "VOUS AVEZ x VIE(S)" et j'ai trouvé une astuce plutôt sympa.
je ne sais pas si c'est déjà connu, je vous la transmet ici.
Cette astuce ne peut être utilisée que sur une cx ou avec un module xFunction:
Vous devez d'abord mettre le message sans le "S" dans le registre Alpha puis utilisez ce petit sous programme:
version courte

Code : Tout sélectionner

01 LBL "S
02 ANUM
03 DSE X
04 "ͰS
05 END
ou bien la version qui préserve la pile :

Code : Tout sélectionner

01 LBL "S
02 X<> L
03 CLX
04 ANUM
05 DSE X
06 "ͰS
07 X<> L
08 END
Voilà ANUM extrait une donnée numérique du registre Alpha et le saut après DSE ne se fait que si X<2.
Bien évidemment le nombre utilisé doit être un entier sinon ça ne marche pas.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3421
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: hp 41cx au pluriel

Message par C.Ret »

Salut,

Voilà une astuce bien intéressante pour les HP-41CX ou les heureux possesseurs d'un module X-Functions.
malheureusement, n'ayant qu'une HP-41C de base (ou presque) qui est un petit peu démunie d'instructions de traitement des chaines de caractères, il va me falloir composer différemment. :(

La procédure équivalente pour une HP-41C de base sera donc la suivante :
  1. Ecrire le début du message dans le registre alpha.
  2. Faire en sorte que le numérateur (le terme qui dit combien il y a d'items) soit dans le registre X. En général c'est le rappel du registre qui contient le compteur.
    Transcrire la valeur dans la registre alpha. En général par ARCL X mais il faut souvent aussi adapter le format ou extraire l'information (sf. exemple ci-dessous).
  3. Completer le message au singulier
  4. Enfin ajouter s'il y lieu la marque du pluriel.
  5. Afficher ou imprimer le message contenu dans le registre alpha.
Ce qui donne typiquement le code suivant:

Code : Tout sélectionner

100 CLA  "RESTE"                                //  Etape 1
102 RCL 11  FIX 0  CF 28  CF 29  ARCL X         //  Etape 2  (le nombre de vie est dans le registre n°11)
106 "Ͱ VIE"                                     //  Etape 3
107 x>0? "ͰS"                                   //  Etape 4
108 PROMPT                                      //  Etape 5  (ou AVIEW)
C'est quand même moins élégant, général et astucieux que l'utilisation de ANUM.

Mais bon, avoir des messages alphanumériques c'est quand même un gros progrès par rapport aux HP classiques uniquement numériques !


EDIT : oops, ce code est erroné il met une S alors qu'il ne reste qu'une seule vie ! Voir l'intervention de zpalm ci-dessous.

Le code correct est :

Code : Tout sélectionner

100 CLA  "RESTE"                                //  Etape 1
102 RCL 11  FIX 0  CF 28  CF 29  ARCL X         //  Etape 2  (le nombre de vie est dans le registre n°11)
106 "Ͱ VIE"                                     //  Etape 3
107 DSE X  "ͰS"                                 //  Etape 4  (plus mieux que 1 X<Y? "ͰS" héhé )
108 PROMPT                                      //  Etape 5  (ou AVIEW)
Modifié en dernier par C.Ret le 15 déc. 2021 17:11, modifié 1 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2934
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: hp 41cx au pluriel

Message par zpalm »

C.Ret a écrit : 15 déc. 2021 13:42

Code : Tout sélectionner

107 x>0? "ͰS"                                   //  Etape 4
Pourquoi x>0? et non DSE X ? Avec x>0? tu ajoutes un S si x=1.

Sinon avec un module Paname sur une 41C on dispose à la fois de ANUM et de APPX qui ajoute la partie entière de X au registre Alpha ce qui évite les pénibles "FIX 0 CF 28 CF 29"
APPX est équivalent à l'instruction AIP du module Advantage et de la 42s (au signe près pour le module Advantage comme expliqué ici).
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3421
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: hp 41cx au pluriel

Message par C.Ret »

zpalm a écrit : 15 déc. 2021 15:29
C.Ret a écrit : 15 déc. 2021 13:42

Code : Tout sélectionner

107 x>0? "ͰS"                                   //  Etape 4
Pourquoi x>0? et non DSE X ? Avec x>0? tu ajoutes un S si x=1.
Oops ! Effectivement, erreur d'étourderie, un mixte entre deux codes.

Effectivement le DSE X s'impose et c'est une très bonne idée.

C'était en fait la motivation première de mon post où je voulais justement expliquer qu'avec un test c'est plus compliqué !!

J'édite mon message.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Répondre

Retourner vers « Tous les Pockets »