A..2 quadratic-equation.C


// quadratic-equation.C --- 複素係数の 2 次方程式を解く。
//
//      g++ -o quadratic-equation quadratic-equation.C
//
//    注意: 素朴な (桁落ちの対策などしていない) アルゴリズムを使っている。
//
//    2016/3/22 修正
//      2000年頃動いていたプログラムがコンパイル出来なかったので修正。
//      iostream.h, complex.h をインクルードしていた → .h を取る
//      namespace を指定していなかった (必要なかった) → using namespace std;
//      4, 2 などの int 型を使っていた → double 型にする

#include <iostream>
#include <complex>
using namespace std;

int main(void)
{
  complex<double> a, b, c, D, x1, x2;

  cout << "複素係数の2次方程式 a x^2+b x+c=0 (a≠0) を解きます。" << endl;
  cout << " 複素数は ( ) でくくり、実部と虚部をカンマ , で区切って表す。"
       << endl;
  cout << " 例えば 1+2i は (1,2) と表わします。" << endl;
  cout << "入力してください。" << endl;

  cout << "a="; cin >> a;
  cout << "b="; cin >> b;
  cout << "c="; cin >> c;

  cout << "a=" << a << ", b=" << b << ", c=" << c << endl;

  D = sqrt(b * b - 4.0 * a * c);
  x1 = (-b + D) / (2.0 * a);
  x2 = (-b - D) / (2.0 * a);
  cout << "x1=" << x1 << endl;
  cout << "x2=" << x2 << endl;

  return 0;
}

桂田 祐史
2018-06-19