• 締切済み
  • すぐに回答を!

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 { 次にcout が来るのは分かってるんですが、数学でこういう書き方しなし、ここから先の書き方が分からないんですが、どうやって書けばいいですか? 多分return 0; } のぞいてあと2行か1行だと思うんですが

noname#127615

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数263
  • ありがとう数0

みんなの回答

  • 回答No.2
  • asuncion
  • ベストアンサー率32% (1748/5400)

>cout << (-b/2/a) << 'i' << sqrt(4*a*c-b*b)/2/a << '\n'; 虚数解の場合をこのように書けるということは、解の公式自体はじゅうぶん理解されているのですね。 とすれば、当該公式の±の部分をばらして、別々に書くだけではないですか。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 二次方程式のプログラム

    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 { この先の最後の一文教えてください。抜けてて書いてないんです。

  • C++で二次方程式のプログラム

    大分前に二次方程式のプログラムを作るって問題が出ていました。 しかし、セットで作ったプログラムのフローチャートを書くんですがフローチャートが分かりません。 条件は 虚数解 a=0 実数解 の場合分けをして、解を出すってプログラムなんですが、多分、それ自体は合っていると思います。 しかし、そのフローチャートを書きなさいって問題があったんですが、それが未だに分からないんですが、これをフローチャートに書くとすると、どう書けばいいですか? #include <iostream> #include <cmath> using namespace std; int main() { double a,b,c,d,x0,x1; cout << "aを入力してください\n"; cin >> a; cout << "bを入力してください\n"; cin >> b; cout << "cを入力してください\n"; cin >> c; d=b*b-4*a*c; x0 = (-b + sqrt(d)) / (2 * a); x1 = (-b - sqrt(d)) / (2 * a); if(a==0) { cout << "解は1つで" << -c/b << "です\n"; } else if(d>0) { cout << "解は二つの実数解で,解は" << x0 << "," << x1 << "です\n"; } else { cout << "解は二つの虚数解で,解は" << (-b) / (2 * a) << "+i" << sqrt(-d) / (2 * a) << " , " << (-b) / (2 * a) << "-i" << sqrt(-d) / (2 * a) << "です\n"; } return 0; }

  • C++の二次方程式のプログラム

    #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 { cout << (-b/2/a) << sqrt(4*a*c+b*b)/2/a << '\n'; } return 0; } 最後のelseの下のcoutが本当に分からないんで教えてくださいお願いします。一応この条件(a=0の時、aが0以上の時、aが0以下の時)で出題されてるんですが…

  • 回答No.1
  • Tacosan
  • ベストアンサー率23% (3656/15482)

重解になる場合と異なる 2実解になる場合とで表示を分ける必要はありますか? 本質的には「数学的に求める式」を書けばいいだけです.

共感・感謝の気持ちを伝えよう!

質問者からの補足

問題にそうやって書いてあるしそれでいいと思いますよ。最後の1行はどう入れればいいんですか

関連するQ&A

  • 二分法のC++プログラム

    #include<iostream> #include<cmath> using namespace std; int main(){ double x1, x2, c; cout <<"x1:"; cin >> x1; cout <<"x2:"; cin >> x2; while(fabs(x2-x1) > 0.00001){ c=(x1+x2)/2; if(cos(x1/2.0)*cos(c/2)>=0) x1 = c; else x2 = c; } cout << "x=" << x1 <<endl; return 0; } cos(x/2)=0の解となるxを挟んでいないx1,x2を与えると、結果は保証できないですが、それは別にいいんですか?それはダメだとするとどこを訂正すればいいんですか

  • あるプログラミングでdoubleの箱が

    こんにちは、 とあるプログラミングでdoubleの箱が突然2つでてきて混乱しています。 //読み込んだ実数値は10で割りきれるか #include <cmath> #include <iostream> Using namespace std; Int main() { Double x; Cout <<"実数値: "; cin >> x; If (double m = fmod(x, 10)) { Cout<<"その値は10で割りきれません。\n"; Cout<<"剰余は"<< m << d"です。"\n"; } else{ Cout"その値は10で割りきれます" \n"; } } とあり、なぜ突然double mがでてきたのでしょうか? すみません m(__)m

  • 二分法のC++プログラム

    #include<iostream> #include<cmath> using namespace std; int main(){ double x1, x2, c, a; double x1, x2, c; cout <<"x1:"; cin >> x1; cout <<"x2:"; cin >> x2; while(x2-x1 > 0.00001){ c=(x1+x2)/2; c=(x1+x2)/2; if(cos(x1/2)*cos(c/2)>=0) x1 = c; else x2 = c; } cout << "x=" << x1 <<endl; return 0; } x1 cos(x/2)って入れると x2 -9.25596e+061 って出て cos(pi/2)って入れても同じ風に出てしまうんですがこれも同じように出るんですが故障ですか? x1に3と入れると x2が出てきて、x2は4と入れると xが3.14159と出て、3回xが出ますが、上の2つ(cos(pi/2)とcos(x/2))はx1とx2しか出ません .

  • C++で2点間の内積と距離を求めるプログラム

    C++で2点間の内積と距離を求めるプログラムを作ったのですが、コンパイルの時点でエラーが6つも出てしまいます>< 何がいけないのでしょうか? #include <iostream> #include <cmath> using namespace std; int main(void){ int x, y, z, w, l, n; cin >> x >> y >> z >> w; n=x*w+y*z;   l=sqrt((x-z)(x-z)+(y-w)(y-w)); cout << "距離は" << l << "で、内積は" << n; return 0; }

  • C++で二分法のプログラム

    C++で二分法のプログラムを作るんですが x1-x2が十分小さくなれば(10^-5)終了する 例 cos(x/2)の解を出す これどうやればいいんですか?whileを使うらしいですが。 文法というのは、 if系、while、switch、continue、for、break文くらいしかやってないんですが #include <iostream> #include <cmath> using namespace std; int main() { までは行きますが… 出力はcout 入力はcinでお願いできないでしょうか

  • C++で分からないプログラムがあるんですが

    #include <iostream> #include <cmath> using namespace std; int main() { static const int N = 2; double va[N]={3,-4}; double vb[N]={4,3}; double a,b; double p; for (int i = 0; i < N; ++i) { for (int i = 0; i < N; ++i) { } } cout << "va + vb = (" ; for (int i = 0; i < N; ++i) { cout << va[i] + vb[i]; if (i < N - 1) { cout << ", "; } } cout << ")" << '\n'; cout << "va - vb = (" ; for (int i = 0; i < N; ++i) { cout << va[i] - vb[i]; if (i < N - 1) { cout << ", "; } } cout << ")" << '\n'; p = 0; for (int i = 0; i < N; ++i) { p += va[i] * vb[i]; } cout << "va・vb = " << p << '\n'; a = 0; for (int i = 0; i < N; ++i) { a += va[i] * va[i]; } a = sqrt(a); b = 0; for (int i = 0; i < N; ++i) { b += vb[i] * vb[i]; } b = sqrt(b); if (a * b != 0) { cout << "cosθ = " << p / (a * b) << '\n'; } return 0; } これで、ベクトルの加減とベクトルの内積とcosθが出るんですが、2つのベクトルを適当に初期化しないといけないんですが、初期化ってこれで初期化ってできてますか?

  • ''C++の条件分岐分からないんですが

    #include<iostream> using namespace std; int main(){ int a; cout << "数値を入力してください\n"; cin >> a; if( a > 30) cout <<"31以上ですね\n"; } else if(a<10){ cout <<"10未満ですね\n"; } else { cout <<"30以下で10以上ですね\n"; } return 0; } これが例文なんですが、 変数aの値がbより小さい場合には、『aはbより小さいです』と表示させ、大きい場合には"a=a+b"を計算させる 文字変数mの中身が'a'ならば、『aが格納されています』と表示させて、'a'でないならば『'a'でない文字が格納されています』と表示させたあと、変数bとcを使った『b=b+c』を計算する。 変数aが、変数bより小さい場合には、『aはbより小さいです』と表示し、変数bより大きい場合には、『aはbより大きいです』と表示し、変数bと等しい場合には、『aとbは等しいです』と表示する #include<iostream> using namespace std; int main(){ int a; if(a < b) { __cout("aはbより小さいです\n"); } else { __c = a + b; }return 0; } #include<iostream> using namespace std; int main(){ int a; if(m == 'a') __cout("aが格納されています\n"); } else { __cout("\'a\'でない文字が格納されています\n"); } return 0; } #include<iostream> using namespace std; int main(){ int a; if(a < b) { __cout("aはbより小さいです\n"); } else if(a == b) { __cout("aとbは等しいです\n"); } else { __cout("aはbより大きいです\n"); } return 0; } これ合ってますか?あとプログラミング環境すらないので実行結果教えてもらっていいですか?

  • javaプログラミング

    以下のプログラムがコンバイルできません なぜでしょうか? #include<iostream> #include<cmath> using namespace std; int main() { double a, b; cout << "実数 a の値を入力してください " << endl; cin >> a; cout << "実数 b の値を入力してください " << endl; cin >> b; cout << a << " の " << b << " 乗は " << pow(a, b) << "です" << endl; return 0; }

    • ベストアンサー
    • Java
  • 二次方程式の解き方

    初心者です。自力で解こうとしましたが、どうしてもわからないので質問させていただきます。 問題 2次方程式ax^2+bx+c=0 (ただし aは0でない)の解を求めよ。ただし、a,b,c(実数)はキーボードから入力し、判別式d=b*b-4*a*cが正か0か負かについて処理せよ。 虚数解についてですが、2+3iや4+2iのようなかんじで答えを出さなければいけないそうです。 次に、私が途中まで作ったプログラミングです。 #include<stdio.h> #include<math.h> int main(void) { double a,b,c,x1,x2,i; printf("ax^2+bx+c=0のa b cを入力してください >>>"); scanf("%lf %lf %lf", &a,&b,&c); if(a==0) { if(b==0.0) { printf("係数がおかしい。\n"); } else { x=-c/b; printf("解は、%gです。\n", x1); } } else { D=b*b-4*a*c; if(D>=0.0) { printf("解は重解となり%gです。\n", x1); } else { printf("解は%gと%gです。\n", x1,x2); } } else { ここまで出来ました。一応、実数解と重解の部分のプログラミングは正解しているようです。この次の部分、つまり、虚数解を求める部分のプログラミングが出来ません。よろしくお願いします。

  • 改行文字について

    #include<iostream> using namespace std; int main(void) { char c; while (cin.get(c)) if (c == '\n') cout << "[RET]\n"; else cout << c; return(0); } これのif (c == '\n')の改行文字と等しいとは何のことを指すのでしょうか? よろしくお願いします。