Ca calcul

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
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Ca calcul

Message par Ben » 08 avr. 2017 09:23

Bonjour,

Un petit programme de multiplication pour un petit PB-100

Vu la capacité de la machine, le multiplicande ne peut dépasser les 30 positions et le multiplicateur les 10 positions.

Code : Tout sélectionner

5 VAC
10 INPUT $,A
20 IF LEN($)/5=INT(LEN($)/5) THEN 50
30 B=5-(LEN($)-5*INT(LEN($)/5))
40 FOR C=1 TO B:$="0"+$:NEXT C
50 FOR C=LEN($)/5 TO 1 STEP -1:E$=MID((C*5)-4,5):A(C+5)=VAL(E$)
60 B=A(C+5)*A+D:D=INT(B/100000):A(C+5)=B-100000*D
70 NEXT C
80 PRINT D;:FOR C=1 TO LEN($)/5:PRINT A(C+5);:NEXT C
Sur le Casio, pas moyen de convertir une string variable indicée en numérique? Ca provoque une ERR2

Code : Tout sélectionner

A$(5)="123456"
VAL(A$(5))


D’où le fait que je passe par E$ pour faire la conversion. Mais peut être ai-je loupé un truc!

Ben

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 08 avr. 2017 10:08

Lorsque tu fais VAL(F$) ça marche ?
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 08 avr. 2017 11:35

Oui, ça, ça fonctionne. C'est ce que je fais à la ligne 50

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 08 avr. 2017 12:02

Ben a écrit :Oui, ça, ça fonctionne. C'est ce que je fais à la ligne 50
A$(5) semblerait être F$ et non pas E$ d'après la doc (?!).

Code : Tout sélectionner

A$(5)="123456"
VAL(A$(5))
ERR2

A$(5)="123456"
VAL(F$)
ERR2 aussi ?
Enfin, je ne peux pas trop t'aider... je n'ai pas de PB-100 sous la main :mrgreen:
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5168
Inscription : 26 mars 2009 14:07
Localisation : Ile de France
Contact :

Re: Ca calcul

Message par ledudu » 08 avr. 2017 12:40

Salut,
Effectivement, val ne fonctionne pas sur les tableaux mais uniquement sur les variables.
J'avoue que je le redécouvre.
Toujours préférer l'hypothèse de la connerie à celle du complot.
La connerie est courante. Le complot exige un esprit rare.
Michel Rocard

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 08 avr. 2017 15:26

Tous les tests que j'ai pu faire débouche sur ERR2.

Merci Le du du de confirmer.

En plus, quand il y a une erreur sur le VAL dans un programme, il n'y a pas le numéro du programme, ni le numéro de la ligne en erreur dans le message. J'ai mis un temps pour comprendre. J'ai même penser que le PB avait un souci.

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 08 avr. 2017 18:36

Il serait intéressant de faire le test suivant :

Code : Tout sélectionner

$="12345"
VAL($)
Ça donne quoi ?

Code : Tout sélectionner

$="12345"
VAL(MID(1,2))
Et là ?
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 08 avr. 2017 18:48

Thierry Loiseau a écrit :Il serait intéressant de faire le test suivant :

Code : Tout sélectionner

$="12345"
VAL($)
Ça donne quoi ?
On a bien 12345
Thierry Loiseau a écrit :

Code : Tout sélectionner

$="12345"
VAL(MID(1,2))
Et là ?
ERR2

Je pense que la fonction VAL n'accepte qu'une variable STRING simple (ou le $)

Code : Tout sélectionner

VAL("12345")
Donne aussi ERR2

Evidemment, je n'ai fait les tests que sur le PB-100.

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 08 avr. 2017 19:38

:idea: Et en testant sur la mémoire étendue (au-delà de la plage A...Z) ?

Code : Tout sélectionner

A$(40)="123"
VAL(A$(40))
Avec le FX-702P, on peut appeler A$(4) par A4$...
Je ne sais pas si c'est le cas du PB-100 (pas vu dans la doc)
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 08 avr. 2017 22:13

Il n'y a que 26 mémoires dans le PB-100. Si on veut plus, il faut faire du DEFM pour réserver plus de mémoire. Si je le fais, ça ne change rien, même avec un A$(40), j'ai toujours un ERR2

Il ne peut y avoir qu'un variable caractère simple

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 09 avr. 2017 00:03

Dont acte :)
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 09 avr. 2017 06:49

Ma version pour FX-702P

Code : Tout sélectionner

10 INP $,A:F=LEN($)
20 IF FRAC(F/5)=0 THEN 50
30 B=INT(F/5)*5-F+5:F=F+B
40 FOR C=1 TO B:$="0"+$:NEXT C
50 FOR C=F/5 TO 1 STEP -1:T=0
60 FOR I=4 TO 0 STEP -1
70 E$=MID(C*5-I,1):GSB 230:T=T*10+N
80 NEXT I
90 A(C-1)=T:B=A(C-1)*A+D:
100 D=INT(B/1e5):A(C-1)=B-1e5*D
110 NEXT C
120 PRT D;
130 FOR C=1 TO F/5
140 E=A(C-1):B=1
150 IF E>9;B=1+INT LOG E
160 IF B=1;PRT "0000";#;E;
170 IF B=2;PRT "000";##;E;
180 IF B=3;PRT "00";###;E;
190 IF B=4;PRT "0";####;E;
200 IF B=5;PRT #####;E;
210 NEXT C
220 END
230 IF E$="0";N=0
240 IF E$="1";N=1
250 IF E$="2";N=2
260 IF E$="3";N=3
270 IF E$="4";N=4
280 IF E$="5";N=5
290 IF E$="6";N=6
300 IF E$="7";N=7
310 IF E$="8";N=8
320 IF E$="9";N=9
330 RET
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 09 avr. 2017 19:52

Tu calculés la longueur du résultat dans le tableau aux lignes 160 à 200. C'est vrai que j'ai le souci s'il commence par 0.

Je réfléchis comment je pourrais faire sur le sharp PC1211. Mais je ne vois pas comment avoir une chaîne de caractères plus longue que 7 positions. Le seul moyen que je vois, c'est d'encoder le multiplicande directement dans le tableau par bloque de 5 positions

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 814
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau » 09 avr. 2017 20:15

Au lieu de voir afficher un espace, j'ai préféré afficher le(s) zéro non significatif, oui :)

Code : Tout sélectionner

 7009110145000023
 7 911 1450 23
Les lignes 60 à 80 et le sous-programme à ligne 230 pour parer à l'absence de la fonction VAL() :(

D'ailleurs j'aurais pu simplifier ceci :

Code : Tout sélectionner

60 FOR I=4 TO 0 STEP -1
70 E$=MID(C*5-I,1):GSB 230:T=T*10+N
80 NEXT I
par

Code : Tout sélectionner

60 FOR I=-4 TO 0
70 E$=MID(C*5+I,1):GSB 230:T=T*10+N
80 NEXT I
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1695
Inscription : 21 août 2016 19:04

Re: Ca calcul

Message par Ben » 11 avr. 2017 19:02

Au premier test, le FX-720P n'autorise pas non plus un VAL(A$(5)). Ce n'est pas juste un petit bug dans le PB-100

Répondre

Revenir vers « Tous les Pockets »