• 締切済み

【C++】複素数で配列を使いたい

昨日QNo.3714177で「複素数complex.hがおかしいのでしょうか?」 と言うタイトルで質問させて頂いた、C言語初心者です。 お世話になっております。 今日一日中やっており、C++も少しは理解できるようになったぞっと思った矢先、またまた、問題が発生しました。 複素数の中で、配列を使おうとするとエラーが発生します。 ソースは以下の通りです。上段に私が書いたもの、下段に前回の質問時に教えて頂き、動いたものを記載しております。 どこが間違えているのか教えて頂きたく思います。 よろしくお願い致します。 ============================================================================================================ #include <iostream> #include <iomanip> #include <complex> using namespace std; int main () { int i; for (i=0; i<3; i++) { std::complex <double> Z[i] (i,i); std::cout << "Z[" << i << "]= " << Z[i] << "\n"; } return 0; } //ここより下のみでは動きます。 #if0 #include <iostream> #include <complex> int main() { std::complex<double> x(1.2, 3.4); std::complex<double> y(5.6, 7.8); std::cout << "x = " << x <<"\n"; std::cout << "x = " << y <<"\n"; } #endif ============================================================================================================ Borland C++ 5.6 for Win32 Copyright (c) 1993, 2002 Borland keisan.cpp: エラー E2313 keisna.cpp 11: 定数式が必要(関数 main() ) エラー E2034 keisna.cpp 11: 'int' 型は 'complex<double>[1]' 型に変換できない(関数 main() ) エラー E2293 keisna.cpp 11: ) が必要(関数 main() ) *** 3 errors in Compile ***

みんなの回答

回答No.2

教本やマニュアルなしで闇雲に書きなぐっても徒労に終わりますよ? #include <iostream> #include <iomanip> #include <complex> using namespace std; int main () { complex <double> Z[3]; for ( int i = 0; i < 3; i++ ) { cout << "Z[" << i << "]= " << Z[i] << endl; } }

c-beginer
質問者

お礼

御回答ありがとうございます。 大学の頃に買った、Cの教科書何とかなるかなって甘く見てました。 徒労を楽しんでる感もありましたが、皆様に迷惑を掛けてしまいますので、来週末にでも、マニュアル買ってきます。 ありがとうございましたl

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

配列が使いたいなら std::complex<double> Z[3]; とまずは 3 個分定義してから使って下さい。 いきなり Z[0] を 0+i*0, Z[1] を 1+i*1 Z[2] を 2+i*2 で初期化したい場合は std::complex<double> Z[3] = {  std::complex<double>(0, 0),  std::complex<double>(1, 1),  std::complex<double>(2, 2) }; などと書くしかないと思う。

c-beginer
質問者

お礼

早速の回答ありがとうございます。 以下のように、定義してみました。(検討違いの事してたらすいません。) しかしながら、エラーの内容はかわりません。 何が悪さをしているのでしょうか? 何度も何度もほんとに申し訳ありませんが、教えて頂ければと思います。よろしく御願いします。 int main () { int i; std::complex<double> Z[3]; for (i=0; i<3; i++)           ・           ・           ・

関連するQ&A