このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/976
#  [1] 授業単元:C言語演習 
#  [2] 問題文: 
#  以下の実験データは、あるコンピュータAのメッセージ発生時刻と、そのメッセージが宛先コンピュータBに到着した時刻である。 
#  以下のリストの< >の処理をコメントに従って埋め、メッセージ毎の転送時間を出力するプログラムを作成せよ。 
#  但し、メッセージ転送時間は、メッセージ発生時刻との差である。 
#  <実験データ> 
#  メッセージ番号 発生時刻[ミリ秒] 到着時刻[ミリ秒] 
#  0        0         25 
#  1        5         30 
#  2        10         38 
#  3        15         50 
#  4        20         52 
#  5        25         55 
#  6        30         57 
#  7        35         60 
#  8        40         65 
#  9        45         70 
#  <リスト> 
#  http://ime.nu/codepad.org/PW5VddGM 
#  #include 
#  struct MESSAGE
#  {
#   int gene;
#   int end;
#   int delay;
#  };
#  
#  void delay(struct MESSAGE data[], int i);
#  
#  int main(void)
#  {
#   struct MESSAGE data[10]; int i;
#  //<メッセージの発生時刻と到着時刻の値の代入>
#   for (i=0; i<=9; i++)
#   {
#    delay(data, i);
#    prinff("メッセージ%dの転送時間は%dミリ秒 \n",i, data[i].delay);
#   }
#  }
#  
#  void delay(struct MESSAGE data[], int i)
#  {
#  //<メッセージiの転送時間の計算>
#  }
#  

'実験データは、あるコンピュータAのメッセージ発生時刻と、そのメッセージが宛先コンピュータBに到着した時刻である。メッセージ毎の転送時間を出力する'(_実験データファイル) :-
        実験データは(_実験データファイル,_実験データ行ならび),
        'あるコンピュータAのメッセージ発生時刻と、そのメッセージが宛先コンピュータBに到着した時刻である。メッセージ毎の転送時間を出力する'(_実験データ行ならび).

実験データは(_実験データファイル,_実験データ行ならび) :-
        get_split_lines(_実験データファイル,_実験データ行ならび).
        
'あるコンピュータAのメッセージ発生時刻と、そのメッセージが宛先コンピュータBに到着した時刻である。メッセージ毎の転送時間を出力する'(_実験データ行ならび) :-
        append(_,[_行文字列|R],_実験データ行ならび),
        メッセージ毎の転送時間を(_行文字列,_メッセージ番号,_メッセージの転送時間),
        writef('%t %t\n',[_メッセージ番号,_転送時間]),
        R = [].

メッセージ毎の転送時間を(_行文字列,_メッセージ番号,_メッセージの転送時間) :-
        split(_行文字列,[' '],[_メッセージ番号,_メッセージの発生時刻,_メッセージの到達時刻]),
        _メッセージの転送時間 is _メッセージの到達時刻 - _メッセージの発生時刻.