例4-1二次方程式の根を見つける
タイトルの説明
二次方程式ax2 + bx + c = 0のルートを見つけます。3つの係数a、b、およびcはキーボードによって入力され、aを0にすることはできませんが、b2-4ac> 0は保証されません。
プログラムに含まれる変数はdouble型です。スペースで区切られた1つの要素の2次方程式の3つの係数を
入力
し、2倍精度のダブルタイプを
出力し
ます。2つのルートは次のように分岐によって出力されます(最後の新しい行に注意してください)
。r1=最初のルート
r2 = 2番目のルート
結果が出力されるとき、幅は小数点以下2桁を含む7桁。
方程式に実根がない場合は、次のように情報の行を出力します(最後の新しい行に注意してください):
実根なし!
サンプル入力コピー
1 2 3
サンプル出力コピー
実根なし!
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, r1, r2;
scanf("%lf%lf%lf", &a, &b, &c);
double discriminant;
discriminant = b * b - 4 * a * c;
if (a) {
if (discriminant >= 0) {
r1 = (-b + sqrt(discriminant)) / (2 * a);
r2 = (-b - sqrt(discriminant)) / (2 * a);
printf("r1=%7.2f\nr2=%7.2f", r1, r2);
} else {
printf("No real roots!");
}
}
return 0;
}