このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 131代目 #355 # [1] 授業単元:C言語とアルゴリズム # [2] 問題文:http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10016.txt # [1] 文字列処理(文字分類関数) # キーボードからアルファベット(小文字、大文字)と数字(0-9)が入り交じった文字列を入力し、 # その文字列の含まれる小文字、大文字、数字の数をそれぞれカウントするプログラムを作成しなさい。 # ただし、入力する文字数は最大30文字とする。文字分類関数を必ず用いること # # [2] 文字列処理(文字列操作関数、文字変換関数、文字分類関数) # キーボードから姓と名をそれぞれ入力し,それらを文字列操作関数を用いて連結した後 # 小文字と大文字を入れ換えた文字列を表示するプログラムを作成しなさい。ただし、入力する '[1] 文字列処理(文字分類関数)キーボードからアルファベット(小文字、大文字)と数字(0-9)が入り交じった文字列を入力し、その文字列に含まれる小文字、大文字、数字の数をそれぞれカウントする'(_小文字度数,_大文字度数,_数字度数) :- 'キーボードからアルファベット(小文字、大文字)と数字(0-9)が入り交じった文字列を入力し、'(_文字列), 'その文字列に含まれる小文字、大文字、数字の数をそれぞれカウントする'(_文字列,_小文字度数,_大文字度数,_数字度数). 'その文字列に含まれる小文字、大文字、数字の数をそれぞれカウントする'(_文字列,_小文字度数,_大文字度数,_数字度数) :- atom_codes(_30字までの文字列,_コードならび), 文字分類(_コードならび,0,0,0,_小文字度数,_大文字度数,_数字度数). 'キーボードからアルファベット(小文字、大文字)と数字(0-9)が入り交じった文字列を入力し、'(_30字までの文字列) :- write('アルファベット(小文字、大文字)と数字(0-9)が入り交じった文字列を入力してください(最大30文字)\n'), 行入力(user_input,_文字列), '30文字を越えたら切り取る。30文字を越えていなければその文字列。'(_文字列,_30字までの文字列). '30文字を越えたら切り取る。30文字を越えていなければその文字列。'(_文字列,_30字までの文字列) :- '30文字を越えたら切り取る。'(_文字列,_30文字までの文字列). '30文字を越えたら切り取る。30文字を越えていなければその文字列。'(_文字列,_30字までの文字列) :- '30文字を越えていなければその文字列。'(_文字列,_30字までの文字列) . '30文字を越えたら切り取る'(_30字までの文字列,_30字までの文字列) :- 文字列長が30字を越えていない(_30字までの文字列). '30文字を越えたら切り取る。'(_文字列,_30文字までの文字列) :- sub_atom(_文字列,0,30,_,_30字までの文字列). '30文字を越えていなければその文字列。'(_30字までの文字列,_30字までの文字列) :- '30文字を越えていなければ'(_30字までの文字列). '30文字を越えていなければ'(_30字までの文字列) :- \+(sub_atom(_30字までの文字列,0,30,_,_)). 文字分類([],_小文字度数,_大文字度数,_数字度数,_小文字度数,_大文字度数,_数字度数). 文字分類([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 小文字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数). 文字分類([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 大文字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数). 文字分類([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 数字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数). 小文字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 小文字の度数を上げて(U,A,A2), 文字分類(R,A2,B,C,_小文字度数,_大文字度数,_数字度数). 小文字の度数を上げて(U,A,A2) :- between(97,122,U), succ(A,A2). 大文字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 大文字の度数を上げて(U,B,B2), 文字分類(R,A,B2,C,_小文字度数,_大文字度数,_数字度数). 大文字の度数を上げて(U,B,B2) :- between(65,90,U), succ(B,B2). 数字の度数を上げて文字分類を続ける([U|R],A,B,C,_小文字度数,_大文字度数,_数字度数) :- 数字の度数を上げて(U,C,C2), 文字分類(R,A,B,C2,_小文字度数,_大文字度数,_数字度数). 数字の度数を上げて(U,C,C2) :- between(48,57,U), succ(C,C2). '[2] 文字列処理(文字列操作関数、文字変換関数、文字分類関数) キーボードから姓と名をそれぞれ入力し,それらを文字列操作関数を用いて連結した後 小文字と大文字を入れ換えた文字列を表示する' :- 'キーボードから姓と名をそれぞれ入力し,'(_姓,_名), 'それらを文字列操作関数を用いて連結した後 小文字と大文字を入れ換えた文字列を表示する'(_姓,_名). 'キーボードから姓と名をそれぞれ入力し,'(_姓,_名) :- write('姓名をローマ字で入力してください\n'), キーボードから姓を入力する(_姓), キーボードから姓を入力する(_名). キーボードから姓を入力する(_姓) :- write('姓 ? '), 行入力(user_input,_姓). キーボードから姓を入力する(_名) :- write('名 ? '), 行入力(user_input,_名). 'それらを文字列操作関数を用いて連結した後、小文字と大文字を入れ換えた文字列を表示する'(_姓,_名) :- 'それらを文字列操作関数を用いて連結した後、'(_姓,_名,_姓名), '小文字と大文字を入れ換えた文字列を表示する'(_姓名). 'それらを文字列操作関数を用いて連結した後、'(_姓,_名,_姓名) :- atom_concat(_姓,_名,_姓名). '小文字と大文字を入れ換えた文字列を表示する'(_姓名) :- '小文字と大文字を入れ換えた文字列を'(_姓名,_小文字大文字を入れ換えた姓名), 表示する(_小文字大文字を入れ換えた姓名). '小文字と大文字を入れ換えた文字列を'(_姓名,_小文字大文字を入れ換えた姓名) :- atom_codes(_姓名,_コードならび), 小文字大文字を入れ換える(_コードならび,_小文字大文字を入れ換えたコードならび), atom_codes(_小文字大文字を入れ換えた姓名,_小文字大文字を入れ換えたコードならび). 小文字大文字を入れ換える([],[]). 小文字大文字を入れ換える(L1,L2) :- 小文字大文字を入れ換えて行く(L1,L2). 小文字大文字に入れ換えて行く(L1,L2) :- 小文字は大文字に変換後さらに入れ換えて行く(L1,L2). 小文字大文字に入れ換えて行く(L1,L2) :- 大文字は小文字に変換後さらに入れ換えて行く(L1,L2). 小文字は大文字に変換後さらに入れ換えて行く([A|R1],[B|R2]) :- 小文字は大文字に変換後(A,B), 小文字大文字を入れ換える(R1,R2). 小文字は大文字に変換後(A,B) :- between(97,122,A), B is A - 32. 大文字は小文字に変換後さらに入れ換えて行く([A|R1],[B|R2]) :- 大文字は小文字に変換後(A,B), 小文字大文字を入れ換える(R1,R2). 大文字は小文字に変換後(A,B) :- between(65,90,A), B is A - 32. 表示する(_小文字大文字を入れ換えた姓名) :- writef('大文字と小文字を相互に変換した姓名は %w です\n',[_小文字大文字を入れ換えた姓名]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%% 行入力(_入力,_行) :- read_line_to_codes(_入力,_コードならび), atom_codes(_行,_コードならび). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび).