c++で出力を小数表示ではなく√なんとかと表示させたいです。
今二次方程式の解を求めるプログラムをxcodeで作っていて
c++
1#include <iostream> 2#include <iomanip> 3#include <cmath> 4 5using namespace std; 6 7int main() 8{ 9 10 double a, b, c; 11 double d, sol[2]; 12 13 cout<<"a="; 14 cin >> a; 15 cout<<"b="; 16 cin >> b; 17 cout<<"c="; 18 cin >> c; 19 20 cout << "二次方程式は: "; 21 cout<<a<<"*xˆ2+"; 22 cout<<b<<"*x +"; 23 cout<<c<<"=0"<<endl; 24 25 d=b*b-4*a*c; 25: 26 sol[0] = (-b + sqrt(d)) / (2 * a); 27 sol[1] = (-b - sqrt(d)) / (2 * a); 28 cout.precision(20); 29 cout << "Solutions: " << sol[0] << ", " << sol[1] << endl; 30 31 return 0; 32 }
と書きました。これでは解が±√2の時1.4142135623730951455,-1.4142135623730951455
と表示されます。これを√2,-√2と表示させるにはどのようにしたら良いでしょうか?
また、解が1.732.../4.232...(2.5±√3)の場合は5+2√3/2、5ー2√3/2と表示させたいです。
つまり中学高校の時に二次方程式を解いたような回答の仕方にしたいのですが、可能でしょうか?
解が±√2以外、例えば1/2(1.5±√0.25)だったり1.732.../4.232...(2.5±√3)だったりしたときはどう表示されるのですか?
回答ありがとうございます。有理数の場合はそのまま有理数で、1.732.../4.232...の場合は5+2√3/2、5ー2√3/2と表示させたいです。
中学、高校の時に二次方程式を解いた時の解のように答えたいです。お願いします。
追記:その例を質問の追記に使わせてもらいます、質問の記入不足すいません????
残念ながら、通常コンピュータで扱うのは誤差を含む可能性のある「数値」なので、「有理数」「無理数」を区別することはできません。さらには、整数とそれ以外を「ちゃんと」区別することも出来ません。
極論、(-b+√d)/(2*a) にa,b,dをはめ込んでそのまま表示するぐらいしかできませんが、それで満足できますか? このとき、a,b,dがそれぞれ整数であるなんて期待はほとんど持てません。
なるほど。
回答ありがとうございます!dが4の倍数になる時、整数になるとき、分数になるとき、で場合分けして頑張ってみます????ありがとうございました????♂️
回答2件
あなたの回答
tips
プレビュー