/* Part4 演習問題6 */
/* 2次方程式の解 */
#include <stdio.h>

int main(void)
{

  double a,b,c ;  /* 係数 */
  double d ;      /* 判別式  */

  printf("2次方程式の係数a,b,cを入力してください。\n") ;
  scanf("%lf %lf %lf",&a,&b,&c) ;
   
  if(a==0) {
    printf("2次方程式の係数に誤りがあります。\n") ;
    return(1) ;
  }
 
  d=b*b-4*a*c ;

  printf("係数a=%f b=%f c=%fの解は",a,b,c) ;
  if(d==0){
    printf("重解です。\n") ;
  }
  else if(d>0) {
    printf("実数解です。\n") ;
  }
  else {
    printf("虚数解です。\n") ;
  }
  return(0) ;
}

% gcc -Wall part4-6.c
% ./a.out
2次方程式の係数a,b,cを入力してください。
0 2 3
2次方程式の係数に誤りがあります。

% ./a.out
2次方程式の係数a,b,cを入力してください。
1 -2 1
係数a=1.000000 b=-2.000000 c=1.000000の解は重解です。

% ./a.out
2次方程式の係数a,b,cを入力してください。
1 -5 6
係数a=1.000000 b=-5.000000 c=6.000000の解は実数解です。

% ./a.out
2次方程式の係数a,b,cを入力してください。
1 1 1
係数a=1.000000 b=1.000000 c=1.000000の解は虚数解です。

  1. 最初の例は,係数に誤りがある例である.係数aが0ならば2次方程式ではなく1次方程式である.
  2. 2番目の例は,2次方程式(x-1)(x-1)の係数を指定した例である(解は重解).
  3. 3番目の例は,2次方程式(x-2)(x-3)の係数を指定した例である(解は実数解).
  4. 4番目の例は,2次方程式x^2+x+1であり,解は虚数解となる.