このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/72
#  [1] 授業単元:C言語演習  
#  [2] 問題文:  
#  以下のデータは、3つの商品A、B、Cのある月の売り上げ個数と単価である。  
#  以下のリストの< >の処理をコメントに従って埋め、商品A、B、Cの売り上げをそれぞれ計算するプログラムを作成せよ。  
#  <売り上げデータ>  
#  商品  個数 単価[円]  
#  商品A 32  500  
#  商品B 27  700  
#  商品C 12  1200  
#   
#  <リスト>  
#  http://ime.nu/ime.nu/codepad.org/2VWOcUPS  
#  #include 
#  struct SYOHIN
#  {
#   int kosu;
#   int tanka;
#   int uriage;
#  };
#  
#  void keisan(struct SYOHIN *x);
#  
#  int main(void)
#  {
#   struct SYOHIN a, b, c;
#  //<商品別の個数と単価の代入>
#   kaisan(&a); printf("商品Aの売り上げは%d円 \n",a.uriage);
#   kaisan(&b); printf("商品Bの売り上げは%d円 \n",b.uriage);
#   kaisan(&c); printf("商品Cの売り上げは%d円 \n",c.uriage);
#  }
#  
#  void keisan(struct SYOHIN *x)
#  {
#  //<商品xの売り上げの計算>
#  }
#   

商品売上(A,32,500,_).
商品売上(B,27,700,_).
商品売上(C,12,1200,_).


'商品A、B、Cの売り上げをそれぞれ計算する' :-
        'Aの商品売上を再定義する',
        'Bの商品売上を再定義する',
        'Cの商品売上を再定義する'.

'Aの商品売上を再定義する' :-
        retract(商品売上(A,_数量,_単価,_)),
        '商品売り上げを計算する'(_数量,_単価,_売上金額),
        assertz(商品売上(A,_数量,_単価,_売上金額)),
        writef('Aの商品売上は %t です\n',[_売上金額]).

'Bの商品売上を再定義する' :-
        retract(商品売上(B,_数量,_単価,_)),
        '商品売り上げを計算する'(_数量,_単価,_売上金額),
        assertz(商品売上(B,_数量,_単価,_売上金額)),
        writef('Bの商品売上は %t です\n',[_売上金額]).

'Cの商品売上を再定義する' :-
        retract(商品売上(C,_数量,_単価,_)),
        '商品売り上げを計算する'(_数量,_単価,_売上金額),
        assertz(商品売上(C,_数量,_単価,_売上金額)),
        writef('Cの商品売上は %t です\n',[_売上金額]).

'商品売り上げを計算する'(_数量,_単価,_売上金額) :-
        _売上金額 is _単価 * _数量.