失礼します。
二次関数の解を求めるプログラムを作りたいのですが、
いざ係数を入力してみると全く違う結果が出てきました。
もしよろしければどこが間違っているのか教えてください。
以下が私が書いたものです。
#include <stdio.h>
#include <math.h>
int main(int argc, const char * argv[]) {
double a, b, c, d, y1, y2, y3;
printf("ax^2 + bx + c = 0\n");
printf("係数の値を入力してください");
scanf("%lf", &a, &b, &c);
d = ( b * b ) - ( 4 * a * c );
if ( d > 0 ) {
y2 = ( -1 * b + sqrt(d) ) / ( 2 * a );
y3 = ( -1 * b - sqrt(d) ) / ( 2 * a );
printf("x1 = %lf, x2 = %lf", y2, y3);
}
else if( d == 0 ) {
y1 = ( -1 * b ) / ( 2 * a );
printf("x = %lf [重解]", y1);
}
else {
printf("実数解はありません");
}
return 0;
}
よろしくお願いします
二次関数について
Re: 二次関数について
書式文字列の内容と
読み込みたい変数の数とが
対応していない、というのは
他の回答者さんの書かれたとおりです。
ちなみに、二次関数の解ではなく、
二次方程式の解です。
読み込みたい変数の数とが
対応していない、というのは
他の回答者さんの書かれたとおりです。
ちなみに、二次関数の解ではなく、
二次方程式の解です。
Re: 二次関数について
これでも間違いではありませんが、 argc や argv を一切使っていませんので、
でじゅうぶんだと思います。使わない変数は定義しない、というポリシーです。
これでも間違いではありませんが、 -1 * b の部分は -b と書くのが普通でありましょう。
簡単に書けるところは簡単に書く、というポリシーです。
printfでdouble型の変数を出力する際の書式文字列は %f だと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。