CASIOfx5800pのプログラムを書いたのですが、動きません、間違えてるところがあれば教えて頂きたいです。お願いします。半スパン A、矢高 H、ピッチ P → 座標表+R算出 \u0026quot;A?\u0026quot;→A\u0026quot;H?\u0026quot;→H\u0026quot;PITCH?\u0026quot;→P0→X0→NClsLbl 0H-H/(A*A)*X*X→YIf N=0 Then X→X1 Y→Y1IfEndIf X=A/2 Then X→X2 Y→Y2IfEndIf X=A Then X→X3 Y→Y3IfEndLocate 1,1+N,\u0026quot;X=\u0026quot;Locate 3,1+N,XLocate 7,1+N,\u0026quot;Y=\u0026quot;Locate 9,1+N,Y◢N+1→NX+P→XIf X≤A Then Goto 0IfEndX2-X1→A1Y2-Y1→B1X3-X1→C1Y3-Y1→D1√(A1*A1+B1*B1)→U√(C1*C1+D1*D1)→V√((A1-C1)*(A1-C1)+(B1-D1)*(B1-D1))→W(U*V*W/(2*(A1*D1-B1*C1)))→RIf R\u0026lt;0 Then -R→RIfEndCls\u0026quot;R=\u0026quot;◢R◢End

1件の回答

回答を書く

1160574

2026-01-31 08:55

+ フォロー

fx-5800Pだと、文法的に通らないところがいくつかあるので、そのままでは動きません。

主な問題点は次の三つです。

1. 変数名に「X1」「A1」などは使えない
fx-5800P の変数は「A~Z」「θ」「r」など、基本的に1文字だけです。
「X1」「Y1」「A1」などと書くと、「X×1」「A×1」といった“式”として解釈されてしまい、
「X→X1」「X2-X1→A1」などの行で構文エラーになります。

なので、例えば
X1, Y1, X2, Y2, X3, Y3, A1, B1, C1, D1 などは

X1 → A
Y1 → B
X2 → C
Y2 → D
X3 → E
Y3 → F
A1 → G
B1 → H
C1 → I
D1 → J

のように、1文字の変数に割り当て直して書き換える必要があります。
もしくは List を使って「X→List 1[1]」のように配列で管理します。

2. Locate を1行に2回続けて書いている
質問文では

Locate 1,1+N,“X=“Locate 3,1+N,X

のように、Locate が続けて書かれていますが、
この場合は

Locate 1,1+N,“X=”:Locate 3,1+N,X

のように「:」で区切るか、行を分けて

Locate 1,1+N,“X=”
Locate 3,1+N,X

と書かないと文法エラーになります。
Y の方も同様です。

3. X=A/2, X=A の条件が成立しないことがある
ループ内で X は「X+P→X」とピッチ P ずつ増えていますが、
P の値によっては「X=A/2」や「X=A」がぴったり成立しないままループを抜けます。
その場合、X2,Y2 や X3,Y3 が一度も代入されず、後の計算が正しくできません。

例えば

If X=A/2 Then

の代わりに

If Abs(X-A/2)≤P/2 Then

のように「近くに来たら代入する」という判定にした方が安全です。

まずは

・変数名を全て1文字に直す
・Locate の行を「:」または改行で分ける

を直して、文法エラーが出ない形にしてから、
必要に応じて条件式(X=A/2 など)の見直しをすると良いと思います。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有