next up previous contents
Next: B.3.2 C++ の (とても簡潔な) Up: B.3 C++ について Previous: B.3 C++ について

B.3.1 まずはサンプル・プログラム

quadratic-equation.C

   1 // quadratic-equation.C --- 複素係数の 2 次方程式を解く。
   2 //
   3 //    コンパイルは (6701 号室では例えば)
   4 //      g++ -o quadratic-equation quadratic-equation.C
   5 //
   6 //    注意: 素朴な (桁落ちの対策などしていない) アルゴリズムを使っている。
   7 
   8 #include <iostream.h>
   9 #include <complex.h>
  10 
  11 int main()
  12 {
  13   complex<double> a, b, c, D, x1, x2;
  14 
  15   cout << "複素係数の2次方程式 a x^2+b x+c=0 (a≠0) を解きます。" << endl;
  16   cout << " 複素数は ( ) でくくり、実部と虚部をカンマ , で区切って表す。"
  17        << endl;
  18   cout << " 例えば 1+2i は (1,2) と表わします。" << endl;
  19   cout << "入力してください。" << endl;
  20 
  21   cout << "a="; cin >> a;
  22   cout << "b="; cin >> b;
  23   cout << "c="; cin >> c;
  24 
  25   cout << "a=" << a << ", b=" << b << ", c=" << c << endl;
  26 
  27   D = sqrt(b * b - 4 * a * c);
  28   x1 = (-b + D) / (2 * a);
  29   x2 = (-b - D) / (2 * a);
  30   cout << "x1=" << x1 << endl;
  31   cout << "x2=" << x2 << endl;
  32 
  33   return 0;
  34 }

実行例

oyabun% g++ -o quadratic-equation quadratic-equation.C
oyabun% ./quadratic-equation 
複素係数の2次方程式 a x^2+b x+c=0 (a≠0) を解きます。
 複素数は ( ) でくくり、実部と虚部をカンマ , で区切って表す。
 例えば 1+2i は (1,2) と表わします。
入力してください。
a=1
b=1
c=1
a=(1,0), b=(1,0), c=(1,0)
x1=(-0.5,0.866025)
x2=(-0.5,-0.866025)
oyabun%


next up previous contents
Next: B.3.2 C++ の (とても簡潔な) Up: B.3 C++ について Previous: B.3 C++ について
Masashi Katsurada
平成21年7月9日