1

私のプログラムは、今日電卓のコーディング方法を学んでいますが、応答はありませんが「完了」です。

    PROGRAM:FACTORS
    :ClrHome
    :Input "A=", A
    :Input "B=", B
    :Input "C=", C
    :For(D,1,100,1)
    :For(E,1,100,1)
    :If (D*E)=C and (D+E)=B
    :Stop
    :End:End:End
    :Disp D
    :Disp E
4

2 に答える 2

1

2 つの問題:

1: すべての ":end" が同じ行にあります。それぞれ別のことをする

2: これがおそらく最大の問題です: 「停止」コマンドです。「停止」は、プログラムを完全に終了し、通常の機能に戻るために使用されます。あなたがやりたいことは、D*E=C と D+E=B の 1 回だけループを停止させることだと思います。その場合、次の 2 つのいずれかを行うことができます。ブレークアウト コードを繰り返しループに記述します。例えば

:ClrHome
:Input "A=", A
:Input "B=", B
:Input "C=", C
:For(D,1,100,1)
:For(E,1,100,1)
:Repeat (D*E)=C and (D+E)=B
:End
:End
:End
:Disp D
:Disp E

または、Goto コマンドを使用できます。

:If (D*E)=C and (D+E)=B
:Goto Lbl A

コードのさらに下で、変数を表示したい場所の上に「Lbl A」を配置します

于 2014-05-16T15:57:11.593 に答える
0

あなたが抱えている問題は、 stop がループを壊すだけでなく、プログラムを完全に終了させることです。これを修正するには、代わりに、または For ループを使用して、Repeat ループを使用できます。

:1→D
:Repeat (D*E=C and D+E=B) or D=100
::1→E
::Repeat (D*E=C and D+E=B) or E=100
:::E+1→E
::End
::1+D→D
:End

余分なコロンは無視できます。わかりやすくするためにありますが、改行と同じように機能するため、残してもコードは機能します。

D*E=C and D+E=BRepeat ループは、条件が満たされると自動的に中断されますが、変数の初期化とインクリメントは自分で処理する必要がEありDます。

Aまた、が 1 に等しくない場合、因数分解アルゴリズムが失敗する可能性があることに注意してください。Bと の両方を でC割り、定数係数としてA出力することを検討してください。A

コードのもう 1 つのエラーは、ステートメントが多すぎることですがEnd、これを修正してもプログラムは修正されず、Stop. のIfないThenは を必要としませんがEnd、条件が true の場合は 1 行だけが実行されます。例えば:

:If <condition>
:<one statement>

また

:If <condition>
:Then
:<statement 1>
:<statement 2>
:<statement ...>
:<statement n>
:End
于 2014-05-20T21:45:20.917 に答える