
「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ランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
一般のソフトで画像を扱う場合...
-
C言語で128bitの2進数のビット...
-
CASLIIでかけ算
-
シーケンス制御についての質問...
-
PLC 命令について
-
ビットシフトってどんな時使うの?
-
ビット列を表示するプログラム
-
エクセルVBAのIf,Then 構...
-
浮動小数点数の内部表現につい...
-
verilog 符号付加減算(最上位...
-
プログラム言語
-
電化製品って何言語?
-
ライン数とステップ数の違いは?
-
CPUは何故、16bit→32bit→64bit...
-
【H8マイコン】HEWで埋め込みア...
-
PIC16F1シリーズマイコンのNCO...
-
このアセンブラの意味を教えて...
-
アセンブラのコマンドについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
シーケンス制御についての質問...
-
C言語で128bitの2進数のビット...
-
一般のソフトで画像を扱う場合...
-
ビットシフトってどんな時使うの?
-
エクセルVBAのIf,Then 構...
-
16ビットCPUで32ビットの計算方法
-
Javaの問題について
-
03分22秒36のような時間の単位...
-
2の補数
-
verilog 符号付加減算(最上位...
-
命令について
-
A4 持ち込み
-
スロースキャンコンピュータ 加...
-
ビット演算子
-
この画像の命令「CMP k300 D0 M...
-
C言語やC++言語でビット毎に値...
-
ギルバートモデルの、ビット誤...
-
3進数を10進数に変換
おすすめ情報