このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/956
#  [1] 授業単元:C言語演習 
#  [2] 問題文(含コード&リンク):http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10845.txt 
#  
# 問1.2のどちらも break goto の使用は禁止です。
# 
# 
# 
# 問1)検索する文字列を入力し、その位置を返す ユーザ関数 を使ってプログラムを作成しなさい。
# 
#      条件 プロトタイプ宣言 : char *MojiSearch(char *m, char *s)
#            引数 1 : 検索対象文字列
#            引数 2 : 検索文字列
#            戻り値 : あった場合 (一致した文字列の先頭アドレス)
#                    なかった場合 (NULL)
#       標準関数 : MojiSearch()内で strlen(),strncmp() のみ使用可能
# 
#       char moji[] = "ABCDEFGHJABFGHSKL";  /*検索対象文字列*/
# 
#      実行画面例
# 
#        1)  検索文字列 ==> HS
#            検索位置 : HSKL
# 
#        2)  検索文字列 ==> JN
#           検索位置 : 検索したい文字はありませんでした
# 
# 
# 
# 問2) 配列データの平均を求める ユーザ関数 を使ってプログラムを作成しなさい。
#    
#    条件 プロトタイプ宣言 : double Average(int *p)
#            引数 : 数値が格納された配列の先頭アドレス
#            戻り値 : 平均
# 
#    実行画面例
#    
#     1) 整数[0] ==> 100
#           整数[1] ==> 80
#           整数[2] ==> 60
#           整数[3] ==> 75
#           整数[4] ==> 89
#           整数[5] ==> 62
#           整数[6] ==> 71
#           整数[7] ==> 50
#           整数[8] ==> 49
#           整数[9] ==> 90
#          
#           平均 : 72.6
#       
#     2) 整数[0] ==> 100
#           整数[1] ==> 80
#           整数[2] ==> 60
#           整数[3] ==> 75
#           整数[4] ==> 89
#           整数[5] ==> 64
#           整数[6] ==> -1
#          
#           平均 : 78.0

検索する文字列を入力し、その位置を返す(_検索対象文字列,_検索文字列,_位置,_検索副文字列) :-
        sub_atom(_検索対象文字列,A,B,C,_検索文字列),
        _位置 is A + 1,
        _残り長さ is B + C,
        sub_atom(_検索対象文字列,A,_残り長さ,_,_検索副文字列),!.
検索する文字列を入力し、その位置を返す(_,_,_,_) :-
        write('検索したい文字はありませんでした\n'),
        !,fail.

入力されたデータの平均を求める :-
        findavg(M,(
                    for(0,N,maxint),
                    write_formatted('整数[%t] ==> ',[N]),
                    get_integer(M),
                    ( M = -1,!,fail;true)),
                _平均),
        write_formatted('平均 = %t\n',[_平均]).