質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1036閲覧

c++で出力を小数ではなくルートなんとかで表示したい

shu142

総合スコア3

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2021/07/14 13:50

編集2021/07/15 01:38

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と表示させたいです。
つまり中学高校の時に二次方程式を解いたような回答の仕方にしたいのですが、可能でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2021/07/14 21:53

解が±√2以外、例えば1/2(1.5±√0.25)だったり1.732.../4.232...(2.5±√3)だったりしたときはどう表示されるのですか?
shu142

2021/07/15 01:39 編集

回答ありがとうございます。有理数の場合はそのまま有理数で、1.732.../4.232...の場合は5+2√3/2、5ー2√3/2と表示させたいです。 中学、高校の時に二次方程式を解いた時の解のように答えたいです。お願いします。 追記:その例を質問の追記に使わせてもらいます、質問の記入不足すいません????
thkana

2021/07/15 11:38

残念ながら、通常コンピュータで扱うのは誤差を含む可能性のある「数値」なので、「有理数」「無理数」を区別することはできません。さらには、整数とそれ以外を「ちゃんと」区別することも出来ません。 極論、(-b+√d)/(2*a) にa,b,dをはめ込んでそのまま表示するぐらいしかできませんが、それで満足できますか? このとき、a,b,dがそれぞれ整数であるなんて期待はほとんど持てません。
shu142

2021/07/18 02:15

なるほど。 回答ありがとうございます!dが4の倍数になる時、整数になるとき、分数になるとき、で場合分けして頑張ってみます????ありがとうございました????‍♂️
guest

回答2

0

お望みの動作は 数式処理システム が近いでしょうか?専用のライブラリが必要です(or 全てを自作するか...)。

例えば次のようなC++ライブラリが存在します。

投稿2021/07/15 09:06

yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu142

2021/07/18 02:20

回答ありがとうございます!数式処理システムのようなものが作りたいのですが、C++ライブラリはレベルが高そうなのでレベルが上がったらやってみます。とりあえず今は場合分けして頑張ってみます。
guest

0

ベストアンサー

二次方程式の解が±√n(nは整数)となるのは、

ax^2-an=0 (a≠0)

の時だけなので、この条件に合うときだけ別処理にすればいいでしょう。

投稿2021/07/14 18:28

編集2021/07/14 18:49
m-take

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shu142

2021/07/15 01:39 編集

回答ありがとうございます。僕の頭では理解できませんでした、すみません。 もう少し具体的に教えていただきたいです???? あと質問の記入不足だったのですが、解がx=1.732.../4.232...(2.5±√3)だった場合x=5+2√3/2、5ー2√3/2と表示させたいです。つまり、中学高校の数学で二次方程式を解いたように表示させたいのですが、可能でしょうか?
kazuma-s

2021/07/15 04:45

5+2√3/2 はダメでしょう。(5+2√3)/2 かな? 2.5+√3 もダメなら、整数だけの組み合わせで、と言いうことでしょうか?
m-take

2021/07/15 06:00

二次方程式の解の公式を変形して x=-(b/2a)±(√(b^2-4ac))/2a となるので、b/2aとb^2-4acと2aを計算して値を表示すれば。 ソースではa、b、cが実数だけど、実は整数だけしか考えていないのであれば、b/2aも約分できるかどうかで整数表記と分数表記が切り替えられそう。
shu142

2021/07/18 02:22

-(b/2a)と(√(b^2-4ac))/2aがそれぞれ有理数になる場合、ならない場合で考えてやってみます。 回答ありがとうございます????‍♂️
yominet

2021/07/18 03:21

m-takeさんが書かれているように、入力値(a,b,c)が整数で限定されるとするならば、sqrt()を使わず、dの値を素因数分解してe√fを求めればいいのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問