このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 150代目 #539 # [1] 授業単元:C言語演習 # [2] 問題文(含コード&リンク): # 再帰関数呼出しを用いて、10進数の数decをbase進数の数xに変換する関数 # conv_base(dec,base,x)を作成しなさい。 # base=2,8,16以外も実行例に示すこと。 # ただし、base関数の数xはchar型の配列となる。 # decをbaseで割ったときの商が正ならば、さらに割ることができるので、 # 関数conv_base(dec/base,base,x)を呼び出す。 # この後、decをbaseで割ったときの余りが、その桁の値になる。 # 余りが9以下ならば数字に変換し、10以上ならば'a'以降の対応する # アルファベットに変換し、文字列xに代入する。 # base進数の数xはmainの中で表示すること。 # 文字列に代入するのが難しい場合は、関数の中で出力してもよい。 # n進数(_基数,_10進数整数,_n進数文字列) :- 基数を法として剰余を文字数字化してならびに取る(_10進数整数,_基数,[],_剰余ならび), atomic_list_concat(_剰余ならび,_n進数文字列). 基数を法として剰余を文字数字化してならびに取る(0,_基数,L,L) :- !. 基数を法として剰余を文字数字化してならびに取る(N,_基数,L1,L) :- 下位桁から基数を法として剰余を文字数字化してならびに取って行く(N,_基数,L1,L). 下位桁から基数を法として剰余を文字数字化してならびに取って行く(N,_基数,L1,L) :- 最下位桁の数字と基数を法とした実を取る(N,_基数,N_1,_数字の文字表現), 基数を法として剰余を文字数字化してならびに取る(N_1,_基数,[_数字の文字表現|L1],L). 最下位桁の数字と基数を法とした実を取る(N,_基数,N_1,_数字の文字表現) :- N_1 is N // _基数, Mod is N mod _基数, '10進数字文字表現変換'(Mod,_数字の文字表現). '10進数字文字表現変換'(M1,M2) :- '剰余が0-9だったらそのまま文字表現に変換'(M1,M2). '10進数字文字表現変換'(M1,M2) :- '剰余が10以上だったらそのまま文字数字に変換'(M1,M2). '剰余が0-9だったらそのまま文字表現に変換'(M1,M2) :- M1 < 10, atom_number(M2,M1). '剰余が10以上だったらそのまま文字数字に変換'(M1,M2) :- M1 >= 10, '10以上の数字'(M1,M2). '10以上の数字'(10,a). '10以上の数字'(11,b). '10以上の数字'(12,c). '10以上の数字'(13,d). '10以上の数字'(14,e). '10以上の数字'(15,f). '10以上の数字'(16,g). '10以上の数字'(17,h). '10以上の数字'(18,i). '10以上の数字'(19,j). '10以上の数字'(20,k). '10以上の数字'(21,l). '10以上の数字'(22,m). '10以上の数字'(23,n). '10以上の数字'(24,o). '10以上の数字'(25,p). '10以上の数字'(26,q). '10以上の数字'(27,r). '10以上の数字'(28,s). '10以上の数字'(29,t). '10以上の数字'(30,u). '10以上の数字'(31,v). '10以上の数字'(32,w). '10以上の数字'(33,x). '10以上の数字'(34,y). '10以上の数字'(35,z).