このディレクトリの索引

# ・以下の実行結果になるようプログラムを作成せよ。 # # 実行結果 # 人数 > 5 # 0人目: # 名前 > Taro # 電話番号 > 090-111-1111 # 1人目: # 名前 > Hanako # 電話番号 > 090-222-2222 # 2人目: # 名前 > Ichiro # 電話番号 > 090-333-3333 # 3人目: # 名前 > Jiro # 電話番号 > 090-444-4444 # 4人目: # 名前 > Hanayo # 電話番号 > 090-555-5555 # # 電話帳: # Taro, 090-111-1111 # Hanako, 090-222-2222 # Ichiro, 090-333-3333 # Jiro, 090-444-4444 # Hanayo, 090-555-5555 # # 名前 > Hanayo # Hanayo, 090-555-5555 # # 実行結果 # 人数 > 2 # 0人目: # 名前 > Taro # 電話番号 > 090-111-1111 # 1人目: # 名前 > Taro # 電話番号 > 090-222-2222 # # 電話帳: # Taro, 090-111-1111 # Taro, 090-222-2222 # # 名前 > Taro # Taro, 090-111-1111 # Taro, 090-222-2222 # # 実行結果 # 人数 > 0 # # 電話帳: # # 名前 > Taro # 該当者なし '・以下の実行結果になるようプログラムを作成せよ。 実行結果 人数 > 5 0人目: 名前 > Taro 電話番号 > 090-111-1111 1人目: 名前 > Hanako 電話番号 > 090-222-2222 2人目: 名前 > Ichiro 電話番号 > 090-333-3333 3人目: 名前 > Jiro 電話番号 > 090-444-4444 4人目: 名前 > Hanayo 電話番号 > 090-555-5555 電話帳: Taro, 090-111-1111 Hanako, 090-222-2222 Ichiro, 090-333-3333 Jiro, 090-444-4444 Hanayo, 090-555-5555 名前 > Hanayo Hanayo, 090-555-5555 実行結果 人数 > 2 0人目: 名前 > Taro 電話番号 > 090-111-1111 1人目: 名前 > Taro 電話番号 > 090-222-2222 電話帳: Taro, 090-111-1111 Taro, 090-222-2222 名前 > Taro Taro, 090-111-1111 Taro, 090-222-2222 実行結果 人数 > 0 電話帳: 名前 > Taro 該当者なし' :- '電話番号を登録し、それを表示し、さらに検索する'. '電話番号を登録し、それを表示し、さらに検索する' :- 電話番号登録, 電話番号表示, 電話番号検索. 電話番号登録 :- '最初に入力された処理人数分の名前と電話番号を入力し、電話帳に登録する'. '最初に入力された処理人数分の名前と電話番号を入力し、電話帳に登録する' :- '最初に入力された処理人数分の名前と電話番号を入力し、'(_名前_電話番号ならび), '電話帳に登録する'(_名前_電話番号ならび). '最初に入力された処理人数分の名前と電話番号を入力し、'(_名前_電話番号ならび) :- '最初に入力された処理人数'(_処理人数), '分の名前と電話番号を入力し、'(_処理人数,_名前_電話番号ならび). '最初に入力された処理人数'(_処理人数) :- 催促付き整数入力('\n人数 > ',_処理人数). 催促付き整数入力(_催促,_整数) :- 催促付き行入力(_催促,_行), atom_number(_行,_整数), integer(_整数). 催促付き行入力(_催促,_行) :- write(_催促), 行入力(_行). 行入力(_行) :- read_line_to_codes(current_input,_文字コードならび), atom_codes(_行,_文字コードならび). '分の名前と電話番号を入力し、'(_処理人数,_名前_電話番号ならび) :- findall([_名前,_電話番号],( 何人目(_処理人数), '名前と電話番号を入力し、'(_名前,_電話番号)),_名前_電話番号ならび). 何人目(_処理人数) :- between(1,_処理人数,_人目), writef('%t人目:\n',[_人目]). '名前と電話番号を入力し、'(_名前,_電話番号) :- 名前を入力する(_名前), 電話番号を入力する(_電話番号). 名前を入力する(_名前) :- 催促付き行入力('名前 > ',_名前). 電話番号を入力する(_電話番号) :- 催促付き行入力('電話番号 > ',_電話番号). '電話帳に登録する'(_名前_電話番号ならび) :- forall(member([_名前,_電話番号],_名前_電話番号ならび),assertz(電話帳(_名前,_電話番号))). 電話番号表示 :- writef('\n電話帳 :\n'), forall(電話帳(_名前,_電話番号),writef('%w, %w\n',[_名前,_電話番号])). 電話番号検索 :- 名前を鍵に電話番号を得る,!. 名前を鍵に電話番号を得る :- 名前を入力する(_名前), 電話番号の検索と出力(_名前). 電話番号の検索と出力(_名前) :- 電話帳に名前がない時はエラー表示(_名前). 電話番号の検索と出力(_名前) :- 名前を鍵に電話帳に登録された電話番号を表示する(_名前). 電話帳に名前がない時はエラー表示(_名前) :- 電話帳に名前がない時は(_名前), write('該当者なし\n'). 電話帳に名前がない時は(_名前) :- \+(電話帳(_名前,_)). 名前を鍵に電話帳に登録された電話番号を表示する(_名前) :- forall(電話帳(_名前,_電話番号),名前と電話番号を出力する(_名前,_電話番号)). 名前と電話番号を出力する(_名前,_電話番号) :- writef('%w, %w\n',[_名前,_電話番号]).