いろんな言語で宿題スレ 第三編at TECH
いろんな言語で宿題スレ 第三編 - 暇つぶし2ch527:デフォルトの名無しさん
10/01/30 07:35:48
>>514
% Prolog
'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取って(最後は改行)、二次方程式 ax2+bx+c=0 の解を画面に(標準出力に)出力せよ。二次方程式の解は複素数の範囲で考えること。' :-
  'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取り(A,B,C),
  二次方程式の解(A,B,C,X).

'キーボードから(標準入力から)スペースで区切られた3つの実数 a b c を 受け取り(A,B,C) :-
  get_line(Line),
  split(Line,[' '],L),
  findall(V,(member(A,L),atom_to_term(A,V,_)),[A,B,C]),!.

二次方程式の解(A,B,C,X) :-
  _判別式 is B ^ 2 - 4 * A * C,
  判別式により解を求める(_判別式,A,B,C,X).

判別式により解を求める(_判別式,A,B,C,X) :-
  ( _判別式 > 0; _判別式 > 0.0),!,
  (  X is ((-1) * B + sqrt(_判別式)) / ( 2 * A);
    X is ((-1) * B + sqrt(_判別式)) / ( 2 * A)).
判別式により解を求める(_判別式,A,B,C,X) :-
  (_判別式 = 0;_判別式 = 0.0),!,
  X is ((-1) * B) / ( 2 * A).
判別式により解を求める(_判別式,A,B,C,X) :-
  ( _判別式 < 0; _判別式 < 0.0),!,
  U is (-1) / (2 * A),
  V is sqrt((-1) * _判別式)),
  ( X = (U + iV); X = (U - iV)).


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch