このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 156代目 #489 # [1] 授業単元:C言語演習 # [2] 問題文: # キーボードで入力された名前をchar型の一次元の配列nameに入れていきます。 # 各名前の先頭アドレスをp_nameに入れます。 # p_nameのアドレスをptrptrに入れます。 # 最後に一番長い名前と一番短い名前、変数ptrptr、p_name、nameのアドレスを表示します。 # 実行例: # 名前を10個まで入力できます。桁数は最大30です。 # name1: tanaka # name2: nakabayashi # name3: hama #    ・ #    ・ # 一番長いのは"nakabayashi"で、11桁。 # 一番短いのは"hama"で、4桁。 # Adress of name: 231191 Adress of p_name: 231511 Adress of ptrptr: 231551 # # 'キーボードで入力された名前をならび_nameに入れていきます。一番長い名前と一番短い名前を表示します。' :- キーボードで入力されたならび_nameに入れていきます(_name), 一番長い名前と一番短い名前を表示します(_name). 一番長い名前と一番短い名前を表示します(_name) :- 一番長い名前ならび(_name,_一番長い名前ならび), 一番短い名前ならび(_name,_一番短い名前ならび), 表示します(_一番長い名前ならび,_一番短い名前ならび). 一番長い名前ならび(_name,_一番長い名前ならび) :- 一番長い長さ(_name,_一番長い長さ), 一番長い名前ならび(_name,_一番長い長さ,_一番長い名前ならび). 一番長い長さ(_name,_一番長い長さ) :- findmax(_名前の長さ,( member(_名前,_name), sub_atom(_名前,0,_名前の長さ,0,_名前)),_一番長い長さ). 一番長い名前ならび(_name,_一番長い長さ,_一番長い名前ならび) :- findall(_名前,( member(_名前,_name), sub_atom(_名前,0,_一番長い長さ,_名前)),_一番長い名前ならび). 一番短い名前(_name,_一番短い名前ならび) :- 一番短い長さ(_name,_一番短い長さ), 一番短い名前(_name,_一番短い長さ,_一番短い名前ならび). 一番短い長さ(_name,_一番短い名前ならび) :- findmin(_名前の長さ,( 各人の名前の長さ(_名前の長さ)),_一番短い長さ). 各人の名前の長さ(_name,_名前の長さ) :- member(_名前,_name), atom_length(_名前,_名前の長さ). 一番短い名前ならび(_name,_一番短い長さ,_一番短い名前ならび) :- findall(_名前,( 各人の名前の長さ(_name,_名前の長さ)),一番短い名前ならび). 表示します(_一番長い名前ならび,_一番短い名前ならび) :- 一番長いならびを表示する(_一番長い名前ならび), 一番短いならびを表示する(_一番短い名前ならび). 一番長いならびを表示する(_一番長い名前ならび) :- atomic_list_concat(_一番長い名前ならび,' , ',_一番長い名前表示), writef('一番長い名前は %t です。\n',[_一番長い名前表示]). 一番短いならびを表示する(_一番短い名前ならび) :- atomic_list_concat(_一番短い名前ならび,' , ',_一番短い名前表示), writef('一番短い名前は %t です。\n',[_一番短い名前表示]). キーボードで入力された名前をならび_nameに入れていきます(_name) :- findall(_名前,( 名前を入力(_名前,_終了状態), ( _終了状態=終了,!,fail;true)),_name). 名前を入力(_名前,_終了状態) :- 何人目か表示, 行入力(_行), 名前入力検査(_行,_名前,_終了状態). 名前入力検査('',_,終了) :- !. 名前入力検査(end_of_file,_,終了) :- !. 名前入力検査(名前,_名前,正常). 何人目か表示 :- append(L0,_,_), length([_|L0],_何人目). writef('名前[%t]: ',[_何人目]). 行入力(_行) :- read_line_to_codes(current_input,Codes), atom_codes(_行,Codes).