今日の人気記事

  1. printf関数の変換指定子
  2. 2進数を10進数に変換する
  3. 条件演算子(3項演算子)「? :」
  4. int main(void) - プログラムの基本
  5. while文 - 繰り返し処理

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. 2進数を10進数に変換する
  3. 配列に格納した数値を昇順ソートする
  4. 入力した行列の積(掛け算)を計算する
  5. 入力したアルファベットを小文字から大文字に変換する
  6. 入力した整数が偶数か奇数かを判別する
  7. 10進数を2進数に変換する
  8. 入力した数値の桁数を表示する
  9. 三角形の面積を計算する
  10. 配列に格納した数値を降順ソートする

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