![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
「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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C#の問題で2つの整数a,bの最大公約数(GCD)を求めるユークリッドの互除法は,aをbで割った余り 2 2022/06/26 16:52
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
マイクロコンピューター制御の...
-
1の補数
-
命令について
-
16進数でのAND演算
-
03分22秒36のような時間の単位...
-
「ひまわり」と「なでしこ」の違い
-
ビットシフトってどんな時使うの?
-
文字参照は10進数と16進数では...
-
文系のSE志望です。プログラミ...
-
アセンブラのリンカのダウンロ...
-
ライン数とステップ数の違いは?
-
masm32がうまく動きません。
-
シリアル通信のデータ受信につ...
-
分解能10msのタイマー(dosで)
-
レジストってなんですか?
-
アセンブラからC言語に変換する...
-
トリムレジスタ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
一般のソフトで画像を扱う場合...
-
C言語で128bitの2進数のビット...
-
命令について
-
符号無し整数xを右にnビット回転
-
文字参照は10進数と16進数では...
-
verilog 符号付加減算(最上位...
-
[VBS] 素早くローテート演算したい
-
算術シフト演算が成り立つ理由...
-
アルゴリズムの計算量とオーダ
-
03分22秒36のような時間の単位...
-
シーケンス制御についての質問...
-
CASLIIでかけ算
-
上位ビットと下位ビットの入れかえ
-
ブール代数で解き方がわかりません
-
PS3に搭載されている"Cell"は、...
-
ビットの取り出し方法
おすすめ情報