2023年9月21日木曜日

HP-15Cで余りを求めるプログラムを作る、その2

 

先日、HP-15で余りを求めるプログラムを作りましたが、YHPから出ていたHP-15Cの日本語マニュアルを眺めていたら、HP-15Cには実数から整数を取り除いて、小数点以下の部分だけを抜き出す機能があることに気が付きました。これを使うと、昨日のプログラムがさらにシンプルになります。

余り = 割られる数 − 割る数 × 商


ですが、


割られる数 = 割る数 × (商 + 割り算の結果の小数点以下)

余り = 割る数 × 割り算の結果の小数点以下


となりますよね。この割り算の結果の小数点以下というものを、FRACというキーで得ることができます。

001 - 42,21,14         プログラムをDキーにラベル付け

002 - 44 0 Xレジスタ(割る数)をメモリー0へ格納

003 - 10 割り算(すでにYレジスタには割られる数が入っている)

004 - 42 44 FRACで割り算結果から小数点以下を抜き出す(Xレジスタへ)

005 - 45 0 Xレジスタに割る数を転送

006 - 20         小数点以下と割る数をかけ算(余りが算出)

007 - 43 32 リターン

メモリーは1つしか使わず、割られる数はスタックに置いたまま計算できます。そして、プログラムの行数が12から7に減りました。

使い方は前回と同じで、割られる数[ENTER]割る数[f]Dです。Xレジスタに入っている数値(割る数)をメモリー0に格納(行番号2)、Yレジスタに入っている割られる数をXレジスタの割る数で割ります(行番号3)。FRACで行番号3の結果の小数点以下のみをXレジスタに格納(行番号4)。割る数をメモリー0からXレジスタに転送、自動的に行番号4の数値はYレジスタへ(行番号5)。かけ算実施。Xレジスタの割る数、Yレジスタの割り算の結果の小数点以下のかけ算となり、これは、割られる数を割る数で割った余りとなる(行番号6)

という動作になります。

なお、前回も同様ですが、扱う数値は正の数だけです。負の余りって結構面倒なので、正だけの取扱ということにしますです。

それではまた。

0 件のコメント:

コメントを投稿

何か一言頂ければ・・・