このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/321
#  [1] 授業単元:C++ 
#  [2] 問題文(含コード&リンク): http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10006.txt
#  http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10007.txt
# まず二つの数の割り算の商と余りを一度に計算する関数を作成する。
# 整数の場合と,実数の場合の,2つの関数を同じ名前で定義し,
# オーバーロードされることを確認せよ。ただし,
# 関数名前命は div ,第1引数は被除数,第2引数は除数,
# 第3引数は商を格納するアドレス,第4引数は余りを格納するアドレスとする。

div(_被除数,_除数,_商,_余り) :-
    integer(_被除数),
    integer(_除数),
    _商 is _被除数 // _除数,
    _余り is _被除数 mod _除数.
div(_被除数,_除数,_商,_余り) :-
    real(_被除数),
    real(_除数),
    _商 is truncate(_被除数 / _除数),
    _余りの一 is _被除数 - _商 * _除数,
    div_1(_被除数,_除数,_商,_余りの一,_余り).

div_1(_被除数,_除数,_商,_余り,_余り) :- _余り < _除数,!.
div_1(_被除数,_除数,_商,_余りの一,_余り) :-
     _余りの一 >= _除数,
     _余り is _被除数 - (_商 + 1.0) * _除数.