このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 153代目 #358 # [1] 授業単元: プログラミング演習 # [2] 問題文(含コード&リンク): アルファベットと空白からなる文字列を処理する以下のような関数を作成せよ。なお各関数は処理が成功したときに1、失敗したときに0を返すものとする。 # # (1) 先頭からインデックスpで指定される文字までを反転させる関数int reverse(char *s, int p)を作成せよ。例: # char s[] = "abc defg"; # reverse(s, 3); # printf("%s¥n", s); // -> " cbadefg" # # (2) インデックスpとqで指定される範囲の文字を反転させる関数int reverse2(char *s, int p, int q)を作成せよ。例: # char s[] = "ab cdefg"; # reverse2(s, 4, 7); # printf("%s¥n", s); // -> "ab cgfed" # (ヒント: (1)で作った関数が応用できる?) # # (3) 単語(空白で区切られた文字)の順序を反転する関数int reverse_word(char *s)を作成せよ。例: # char s[] = "abc de f ghi"; # reverse_word(s); # printf("%s¥n", s); // -> "ghi f de abc" # (ヒント: (1)や(2)で作った関数が応用できる?) # # '単語(空白で区切られた文字)の順序を反転する'(_文字列,_単語の順序が反転した文字列) :- '文字列を単語ならびに分解する。ただし、区切り文字列は要素から除外する。'(_文字列,[' '],_単語ならび), reverse(_単語ならび,_順序が反転した単語ならび), atomic_list_concat(_順序が反転した単語ならび,' ',_単語の順序が反転した文字列). '文字列を単語ならびに分解する。ただし、区切り文字列は要素から除外する。'(_文字列,_区切り文字列ならび,[_前文字列|R]) :- 'もはや分解できなくなるまで、文字列を区切り文字列で分解する。ただし、区切り文字列は要素から除外する。'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列,R),!. '文字列を単語ならびに分解する。ただし、区切り文字列は要素から除外する。'(_文字列,_,[_文字列]). 'もはや分解できなくなるまで、文字列を区切り文字列で分解する。ただし、区切り文字列は要素から除外する。'(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列,R) :- 区切り文字列で分解する(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列), '文字列を単語ならびに分解する。ただし、区切り文字列は要素から除外する。'(_後文字列,_区切り文字列ならび,R). 区切り文字列で分解する(_文字列,_区切り文字列ならび,_前文字列,_区切り文字列,_後文字列) :- sub_atom(_文字列,_前文字列,_区切り文字列,_後文字列), member(_区切り文字列,_区切り文字列ならび). sub_atom(_文字列,_前文字列,_適合文字列,_後文字列) :- sub_atom(_文字列,S,_,R,_適合文字列), sub_atom(_文字列,0,S,_,_前文字列), sub_atom(_文字列,_,R,0,_後文字列).