このディレクトリの索引

http://pc12.2ch.net/test/read.cgi/tech/1255709298/471
#  [1] 授業単元:C++ 
#  [2] 問題文(含コード&リンク):メニューを表示し選択された処理を行なう。各機能ごとに関数にし,各関数へのポインタは配列に格納しておきメニュー選択に応じて動的に呼び出す。 
#  実行例:http://ime.nu/kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10037.txt
# ** 計算メニュー **
# 
#  1.足し算
#  2.引き算
#  3.掛け算
#  4.割り算
# 
#  5.終了
# 
# 処理を選んでください 1 
# 
# ** 足し算をおこないます **
# 数1?123 
# 数2?321
# 
#   123 + 321 = 444
# 
# ** 計算メニュー **
# 
#  1.足し算
#  2.引き算
#  3.掛け算
#  4.割り算
# 
#  5.終了
# 
# 処理を選んでください 9 
# 
# ** 計算メニュー **
# 
#  1.足し算
#  2.引き算
#  3.掛け算
#  4.割り算
# 
#  5.終了
# 
# 処理を選んでください4  
# 
# ** 割り算をおこないます **
# 
# 数1?111 
# 数2?50   
#   
#   111 ÷ 50 = 2 ... 11
# 
# ** 計算メニュー **
# 
#  1.足し算
#  2.引き算
#  3.掛け算
#  4.割り算
# 
#  5.終了
# 
# 処理を選んでください 5     
# 
# ** 処理を終了します ** 
# 

計算メニュー('** 計算メニュー **').
計算メニュー('').
計算メニュー(' 1.足し算').
計算メニュー(' 2.引き算').
計算メニュー(' 3.掛け算').
計算メニュー(' 4.割り算').
計算メニュー('').
計算メニュー(' 5.終了').
計算メニュー('').

t933 :-
    repeat,
    計算メニュー表示,
    write('処理を選んでください '),get_integer(N),
    演算処理(N),
    N = 5,
    write('** 処理を終了します **\n').

演算処理(1) :- 足し算.
演算処理(2) :- 引き算.
演算処理(3) :- 掛け算.
演算処理(4) :- 割り算.
演算処理(5).

足し算 :-
    write('** 足し算を行います **\n'),
    二数を得る(_数字1,_数字2),
    _答え is _数字1 + _数字2,
    write_formatted('%t + %t = %t\n',[_数字1,+,_数字2]).
引き算 :-
    write('** 引き算を行います **\n'),
    二数を得る(_数字1,_数字2),
    _答え is _数字1 - _数字2,
    write_formatted('%t - %t = %t\n',[_数字1,+,_数字2]).
掛け算 :-
    write('** 掛け算を行います **\n'),
    二数を得る(_数字1,_数字2),
    _答え is _数字1 * _数字2,
    write_formatted('%t × %t = %t\n',[_数字1,+,_数字2]).
割り算 :-
    write('** 割り算を行います **\n'),
    二数を得る(_数字1,_数字2),
    _答え is _数字1 // _数字2,
    write_formatted('%t ÷ %t = %t\n',[_数字1,+,_数字2]).

二数を得る(_数字1,_数字2) :-
    write('数1?'),get_integer(N1),
    write('数2?'),get_integer(N2).

/*
演算処理(1) :- 演算処理(足し算,+,+).
演算処理(2) :- 演算処理(引き算,-,-).
演算処理(3) :- 演算処理(掛け算,*,×).
演算処理(4) :- 演算処理(割り算,/,÷).
演算処理(5).


演算処理(_演算,_関数,_関数表示) :-
    write_formatted('** %tを行います **\n',[_演算]),
    write('数1?'),get_integer(N1),
    write('数2?'),get_integer(N2),
    functor(Q,_関数,2),
    arg(1,N1),
    arg(2,N2),
    S is Q,
    write_formatted('  %t %t %t = %t\n',[N1,_関数表示,N2,S]),!.
*/