今日の人気記事

  1. (前置・後置)インクリメント演算子, ++
  2. #include <stdio.h> と printf 関数 - プログラムの基本
  3. MinGW - gcc の環境設定(パスを通す) - Windows環境
  4. 変数名の付け方 - 命名規則
  5. 現在時刻の取得 - time関数

2次方程式の解を計算する

当ページのリンクには広告が含まれています。

スポンサーリンク

ここでは「2次方程式の解」を計算するサンプルプログラムを紹介します。

2次方程式の解の公式

まずは2次方程式の解を求める「解の公式」の復習をしておきましょう。

2次方程式(\(a\neq0\))

\[ ax^2 + bx + c = 0 \]

の解は

\[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} \]

で与えられます。

それではサンプルプログラムをみてみましょう。

サンプルプログラム

2次方程式の解を計算するサンプルプログラムです。

/*
 * C言語のサンプルプログラム - Webkaru
 * - 2次方程式の解を計算 -
 */
#include <stdio.h>
#include <math.h>

int main(void)
{

  /* 2次方程式の定数 */
  float a, b, c;

  /* 判別式 */
  float discriminant;

  /* 2次方程式の解 */
  float kai1, kai2;

  /* 解が複素数を含む場合 */
  float real, imag;

  /* 2次方程式の定数を入力 */
  printf("2次方程式の定数を入力してください。\n");

  printf("a = ");
  scanf("%f", &a);

  printf("b = ");
  scanf("%f", &b);

  printf("c = ");
  scanf("%f", &c);

  /* 判別式を計算 */
  discriminant = b * b - 4 * a * c;

  /* 判別式に数値による条件分岐 */
  if ( discriminant > 0 ) {

    // 解の計算
    kai1 = ( -b + sqrt(discriminant) ) / (2*a) ;
    kai2 = ( -b - sqrt(discriminant) ) / (2*a);

    // 解の出力
    printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);

  } else if ( discriminant == 0 ) {

    // 解の計算
    kai1 = kai2 = -b / ( 2 * a );

    // 解の出力
    printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);

  } else {

    // 解の計算
    real = -b / (2*a);
    imag = sqrt(-discriminant) / (2*a);

    // 解の出力
    printf("2次方程式の解: %.2f+%.2fi, %.2f-%.2fi\n", real, imag, real, imag);
  }

  return 0;
}

このサンプルでは判別式

\[ D = \sqrt{b^2-4ac} \]

を使って条件分岐し、2次方程式の解を計算・出力しています。判別式の平方根(sqrt)を計算するためにヘッダーファイル「math.h」を読み込んでいます。

それではいくつかの実行結果をみてみましょう。

2次方程式の定数を入力してください。
a = 1
b = 2
c = 3
2次方程式の解: -1.00+1.41i, -1.00-1.41i
2次方程式の定数を入力してください。
a = 6.2
b = 12
c = 3.4
2次方程式の解: x = -0.34, -1.59
2次方程式の定数を入力してください。
a = 4
b = 4
c = 1
2次方程式の解: x = -0.50, -0.50

サンプルプログラム の人気記事

  1. 入力した整数が偶数か奇数かを判別する
  2. サンプルプログラム集
  3. 配列に格納した数値を昇順ソートする
  4. 入力した自然数の階乗を計算する
  5. 入力した自然数が素数かどうかを判定する
  6. 配列に格納した数値を降順ソートする
  7. 配列の数値の平均値を計算する
  8. 入力した2つの数値の掛け算・割り算する
  9. 入力した文字列の文字数を表示する(出力)
  10. 入力した2つの自然数の最大公約数を求める

関連記事(一部広告含む)