ソフトウェア開発 C言語

二次方程式の解を求める

戻る


二次方程式の解を求めるコードは以下の通り。

/* 二次方程式の解を求める */
#include <stdio.h>
#include <math.h>   /* sqrt関数のために<math.h>が必要 */

int main(void)
{
    double a, b, c, d, x1, x2;

    printf("二次方程式 a*x*x + b*x + c = 0 (a≠0)を解きます。\n");

    /* 値の入力 */
    printf("aの入力: ");
    scanf("%lf", &a);
    if (a == 0.0)
    {
        printf("aがゼロであってはいけません。\n");
        return 1;
    }
    printf("bの入力: ");
    scanf("%lf", &b);
    printf("cの入力: ");
    scanf("%lf", &c);

    /* 判別式 */
    d = b * b - 4 * a * c;

    /* 解を求めて表示する */
    if (d < 0.0)
    {
#if 1
        double x1r, x2r, x1i, x2i;
        x1r = x2r = -b / (2 * a);
        x1i = -sqrt(-d) / (2 * a);
        x2i = +sqrt(-d) / (2 * a);
        printf("x = %f%+fi, %f%+fi\n", x1r, x1i, x2r, x2i);
#else
        printf("解はありません。\n");
#endif
    }
    else if (d == 0.0)
    {
        x1 = x2 = -b / (2 * a);
        printf("x = %f (重解)\n", x1);
    }
    else
    {
        x1 = (-b - sqrt(d)) / (2 * a);
        x2 = (-b + sqrt(d)) / (2 * a);
        printf("x = %f, %f\n", x1, x2);
    }

    return 0;
}

ソース: quadeq.zip


国内格安航空券サイトe航空券.com

戻る

©片山博文MZ
katayama.hirofumi.mz@gmail.com

inserted by FC2 system