2017-08-20 51 views
-4

最初の入力がエントリの数nになるように複素数を格納する配列を作成したいとします。各エントリは、番号の最初の実数部分とそれに続く複雑な部分です。C++で複素数の配列を作成する

Eg: n=2 
1.0 -1.0 
0 3 

は、それぞれ番号1-i、3iの表現である。 これは私が試みたものです。

#include<iostream> 
#include<complex> 

typedef std::complex<double> Complex; 

int main() { 
int n; 
std::cin>>n; 
Complex A[n]; 

for(int i=0;i<n;i++) 
std::cin>>A[i]; 

for(int i=0;i<n;i++) 
std::cout<<A[i]<<" "; 

return 0 ; 
} 

私はC++プログラミングの新人です。私が間違っていた場所を教えてください。

+0

を。 – LogicStuff

+0

'Complex A [n];' VLA(可変長配列)は標準のC++ではありません。また 'std :: complex'は' std :: ostream&operator <<(std :: ostream&、const std :: complex&) 'のオーバーロードを持っていません。 – user0042

+0

@LogicStuffちょっとしたことを詳しく教えてください。 –

答えて

2

まず、cin >> n; Complex A[n]で導入した可変長配列は、C++標準の一部ではなく、コンパイラでサポートされていない可能性があります。 第2に、VLAが一般的にサポートされているコンパイラであれば、std::ComplexのようなタイプのVLA(POD (plain old data))を作成することはサポートされません。

std::vectorの代わりに、プレーンな配列を使用、両方の問題を克服するために:あなたは `のstd :: vector`を使用していませんでした

std::vector<Complex> A(n); 
関連する問題