2017-10-06 10 views
-2

私は二次式を解くためにこのコードを書いていますが、答えが複雑な場合(3iや√-3のようなiotaフォームで)私はそれを管理することができる方法イオタに答えを得るために私は自分のコードから複素数で答えを得ることができました

#include<iostream> 
#include<math.h> 

using namespace std; 

int main(){ 
    float a,b,c,variable1,variable2,variable3,y,x,variable4; 
    cout<<"Enter a:"; 
    cin>>a; 
    cout<<"Enter b:"; 
    cin>>b; 
    cout<<"Enter c:"; 
    cin>>c; 
    variable1=-b; 
    variable2=b*b; 
    variable3=(4*a*c); 
    variable4=(variable2-variable3); 
    y=sqrtf(variable4); 
    x=(variable1+y)/2; 
    cout<<"x=" <<x <<endl; 
} 
+5

ステップ1:コードを正しくインデントします。 – Borgleader

+0

Borgleaderどうですか? –

+0

@UsmanQamarステップ1:不適切にインデントされた行の前にカーソルを置きます。ステップ2:スペースバーを押します。 – glennsl

答えて

4

ので、複雑な結果を得るために、<complex>で宣言されている複雑な結果を生成し、その引数としてstd::complex<T>を取るstd::sqrtのオーバーロードは、あなたが開始する必要があります複雑な入力であり、正しいヘッダーが含まれています。

は、ここで簡単な例です:

#include <complex> 
#include <iostream> 

int main() { 
    std::complex<double> d{ -1, 0 }; 

    std::cout << std::sqrt(d); 
} 

結果:

(0,1) 

これらはそれぞれ実部と虚部を表すので、我々が期待するよう、これは、0+1iあります。

using namespace std::literals; 

auto d = -1.0 + 0i; 

これは、同じ結果を生成し、:

また、C++ 14で始まることは注目に値するかもしれ、標準ライブラリには、このようなdを初期化することができるように、ユーザー定義の虚数のリテラルを定義しますしかし、複素数をa + biと書くことに慣れている人にとっては、よりよく知られている/快適に見えるかもしれません。 1つの "トリック"はまだタイプ控除を行っているので、complex<double>を得るには、-1std::complex<int>を推測しようと思う)の代わりに-1.0を使用する必要があります。

関連する問題