2017-07-31 12 views
-2

偶数配列のインデックス番号(0を含む)(ユーザーが入力する配列)だけを取り出し、奇数個の要素ではなく新しい配列を作成します。:: C++ my code: n = no。要素のユーザーの aは、ユーザーの配列がno.sC++、ポインタと演算子

for(int i=0;i<n/2;i++){     
    arr[i] = *(a+2i); 
} 

入っている入っエラー:

error: invalid operands of types 'int*' and 'complex int' to binary 'operator+'

arr[i] = *(a+2i); 

どのように固定すると、それが何を意味するのでしょうか?

+1

、あなたは '+ 2i'は(実際に[複素数]である私は –

+2

を2Iない* 2を記述する必要がありhttps://en.wikipedia.org/wiki/ Complex_number)、C++では14個の[ユーザ定義リテラル](http://en.cppreference.com/w/cpp/numeric/complex/operator%22%22i)が導入されました。 C++は数学のように暗黙の乗法を持たない。 –

+1

関連しないメモでは、ポインタ 'p'とインデックス' i'のために '*(p + i)'は 'p [i]'に等しい。つまり、あなたのケースでは、 '*(a + 2 * i)'の代わりに 'a [2 * i]'を書くことによって、いくつかのキー入力を保存することができます。 –

答えて

1
*(a+2i); 

は無効である(とフォームa+jbの虚数のように見える)エラーの意味です。

マットオペレータが欠落しているし、代わりに虚数としてそれを解釈している場合、コンパイラは

マット操作を関連付けることはできませんので、あなたは*(a + 2*i);確かに意味します。

2iが自動的2*i

0

と推測されていないので、これはあなたが望む結果を得るためにポインタ演算を使用する必要はありませんです。あなたは私に2を乗算したい場合

for (int i = 0; i < (n/2); ++i) 
{ 
    arr[i] = a[2 * i]; 
} 
+1

これはまだポインタの算術演算であり、コンパイラによってシーンの後ろで行われます。そして、これは本当に質問に答えるものではありません。 –