このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/849
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク):http://ime.nu/codepad.org/oMN19ueH 
#  #  
#  /*
#  入力した文字列を逆順に出力するプログラムを作成せよ
#  ただし文字列の入力および逆順に出力する処理はユーザ関数として作成する。
#  また、main巻子は以下の記述とする。また、プログラム中で外部変数を用いてはならない
#  
#  #define LENGTH 100
#  int main(void)
#  {
#      char string[LENGTH];
#      stringput(string);
#      rprint(string);
#      putchar('\n');
#  
#      return 0;
#  }
#  
#  実行例:
#  input string ... abcde
#  
#  edcba
#  
#  ヒント:
#  プロトタイプ宣言は
#  void strinput(char *)
#  void rprint(char *)   とする.
#  
#  それぞれの関数は
#  void strinput(char *pt)
#  {
#    fgetsを使って入力する.
#  }
#  void rprint(char *pt)
#  {
#    整数型の変数cntを定義する.
#    cntを0から増やしながら*(pt+cnt)で¥0を見つける.
#    cntを減らしながら*(pt+cnt)で出力する.
#  }
#  とする.
#  
#   */

入力した文字列を逆順に出力する :-
        入力した文字列を(_入力した文字列),
        文字列を逆順に出力する(_入力した文字列).

入力した文字列を(_入力した文字列) :-
        get_line(_入力した文字列).

文字列を逆順に出力する(_文字列) :-
        findall(_,(
                    文字列を逆順に(_文字列,_文字),
                    write(_文字)),
                _),
        write('\n').

文字列を逆順に(_文字列,_文字) :-
        sub_atom(_文字列,1,_,0,_残り文字列),
        文字列を逆順に(_残り文字列,_文字).
文字列を逆順に(_文字列,_文字) :-
        sub_atom(_文字列,0,1,_,_文字).