
「CASL2のプログラムを作成せよ」とのことで、次の問題が出されました。
問1.GR1の中身の値(正の整数)とGR2の中身の値(正の整数)の最大公約数をGR3 に入れて返すようなサブルーチンGCDを作れ。再帰を利用すること。
(ヒント)
最大公約数を求めるには、ユークリッドの互除法というアルゴリズムがある。C 言語で記述すると、再帰を使って以下のように書ける。
int gcd (int x,int y){
if (y==0)return x;
return gcd(y,x%y);
}
問2.IN命令により入力された10進数の数値を、16進数に変換して、OUT命令により 表示するプログラムをかけ。
以上の二つです。
手前勝手な事情ですが、明日8/9の午後4時までに、解答の方をよろしくお願いします。
No.1ベストアンサー
- 回答日時:
レポートのようですので、ヒントだけにします。
(1)ユークリッドの互除法は2つの数を割り算して余りと除数を取り出します。
この2つで、更に割り算し・・・を繰り返し、余りが0になった時、除数が
最大公約数になっているというものです。
同じ計算を繰り返すので再帰処理が使えます。
C言語のヒントを見ると、そのようになっています。注意すべきは、最初に
x>yとしておくと判りがいい事です。
CASL2でやる注意点は次の通りです。
・演算は全てレジスター演算でやる事。
・定数以外はメモリーに取らない事。
・関数の代わりに再帰のCALL文を使用。
(2)IN命令で入力されると文字列です。これを桁ごとに数値化して、
桁の重みをかけながら10進数(2進数)になおします。
その後、4ビットずつ切り出して(2進数の形をした16進数)それぞれを
16進(文字)に変換して出力エリアに入れます。
最後にOUT命令で出力します。
この回答への補足
せっかくのヒントなのですが、さっぱりわかりません。
なんとか解答の方をお願いできないものでしょうか?
ちなみにレポートです。これが提出できないと、単位をくれないようで・・・。
タイムオーバーとなってしまいました。
とりあえず、なんとか形にはなったので、大丈夫でしょう。
ヒント、ありがとうございました。
では
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
8ビットのデータの、先頭ビット...
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
シーケンス制御についての質問...
-
一般のソフトで画像を扱う場合...
-
算術シフト演算が成り立つ理由...
-
03分22秒36のような時間の単位...
-
ビットシフトってどんな時使うの?
-
BMP画像のネガを作成するプログ...
-
アセンブリでプログラムの高速...
-
オーバーフローについて教えて...
-
[VBS] 素早くローテート演算したい
-
SRAMとレジスタの違いは何でし...
-
レジストってなんですか?
-
65816アセンブラでの質問
-
【H8マイコン】HEWで埋め込みア...
-
PICでパルス数をカウントし、カ...
-
PC-G830
-
8086アセンブラで、メモリ間の...
-
アセンブラからC言語に変換する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
C言語で128bitの2進数のビット...
-
ビットシフトってどんな時使うの?
-
「ひまわり」と「なでしこ」の違い
-
[VBS] 素早くローテート演算したい
-
一般のソフトで画像を扱う場合...
-
文字参照は10進数と16進数では...
-
アセンブラプログラムの「数値...
-
x86のJP命令について。
-
VB.net
-
命令について
-
03分22秒36のような時間の単位...
-
e(自然対数の底)を100桁以上出...
-
verilog 符号付加減算(最上位...
-
代入の書き方で質問です。
-
マイクロコンピューター制御の...
-
光コンピュータについて
-
アセンブリの論理演算命令のCPL...
-
符号無し整数xを右にnビット回転
おすすめ情報