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

Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Ca calcul

Message par Ben »

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 du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

Oui, ça, ça fonctionne. C'est ce que je fais à la ligne 50
Avatar du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Avatar du membre
ledudu
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5633
Enregistré le : 26 mars 2009 13:07
Localisation : Ile de France
Contact :

Re: Ca calcul

Message par ledudu »

Salut,
Effectivement, val ne fonctionne pas sur les tableaux mais uniquement sur les variables.
J'avoue que je le redécouvre.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

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 du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

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 du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

: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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

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 du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Avatar du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

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 du membre
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 823
Enregistré le : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: Ca calcul

Message par Thierry Loiseau »

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, 8500, Atari Mega ST1 ***], PB-540c, PISMO, [***CPC-6128, MO5***]... et bien d'autres trucs

[--- plus ---]
http://astrophoto.free.fr/
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Ca calcul

Message par Ben »

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

Retourner vers « Tous les Pockets »