• 締切済み

二次方程式のプログラム

C++で二次方程式の解を求めるんですが、虚数解の場合、a=0の場合、実数解の場合で求めるようにしているんですが、 #include <iostream> #include <cmath> using namespace std; int main() { double a,b,c; cin >> a >> b >> c; if(a==0) { cout << (-c/b) << '\n'; } else if((b*b-4*a*c)<0) { cout << (-b/2/a) << 'i' << sqrt(4*a*c-b*b)/2/a << '\n'; } else { この先の最後の一文教えてください。抜けてて書いてないんです。

みんなの回答

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.7

> cout << (-b/2/a) << sqrt(4*a*c-b*b)/2/a << '\n'; > 虚数は消えますからこうですか? 判別式が正のとき、これだとsqrt()の引数が負になってしまうので予期しない結果になるでしょう。問題はそれだけではありませんが。 そもそも質問にあるプログラムだと、虚数解のとき、たとえばa=1, b=0, c=1のときの出力が -0i1 となります。これは期待されている結果と多分違うと思うのですが、それは気にならないのでしょうか?

noname#127615
質問者

補足

cout << (-b/2/a) << 'i' << sqrt(4*a*c+b*b)/2/a << '\n'; これでダメなんですか…

回答No.6

> cout << (-b/2/a) << sqrt(4*a*c-b*b)/2/a << '\n'; > 虚数は消えますからこうですか? a,b,cを与えて実行すればわかることでしょうに。

回答No.5

> cout << (-b/2/a) << 'i' << sqrt(4*a*c-b*b)/2/a << '\n'; > じゃダメなんですか… 判別式が0以上で 'i' が付くわけがない。 プログラミング以前に数学勉強しようよ。

noname#127615
質問者

補足

cout << (-b/2/a) << sqrt(4*a*c-b*b)/2/a << '\n'; 虚数は消えますからこうですか?

回答No.4

> 授業中のノート書いたんですが そんじゃお友達にノート見せてもらえば?

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

二次方程式の解の公式を「本当に」理解されていますか? 判別式の値が0以上のとき、(重解の場合を含めて)2個の解があることは おわかりですよね? その2個の解は、どういう式で書けますか?

noname#127615
質問者

補足

cout << (-b/2/a) << 'i' << sqrt(4*a*c-b*b)/2/a << '\n'; じゃダメなんですか…

回答No.2

教えてください。 http://oshiete1.goo.ne.jp/qa5472503.html 上記の時の質問と何が違うの。。。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

>この先の最後の一文教えてください。抜けてて書いてないんです。 質問の意図がサッパリわかりません。else までは自分で書いたの?

noname#127615
質問者

補足

授業中のノート書いたんですが