2011-01-19 16 views
1

何か問題があります。私は素数を数値にするコードを書いたが、何らかの理由で、私が使用する配列の要素の数を定義しなかったというエラーが出る。要素の数が制限されていない配列を持つことは可能ですか?ありがとう:)無限の配列?

#include <iostream> 
#include <cmath> 
#include <fstream> 
#include <cstdlib> 
using namespace std; 
int primer(int max); 
int main() 
{ 
    system("pause"); 
    return 0; 
    primer(1000); 
} 

int primer(int max){ 
    int a[]=2; 
    for (int i=2;i<=max;i++){ 
    prime=true; 
    for (int ii=1;ii<=#a;ii++) { 
    if i/a[ii]==math.floor(i/a[ii]) { 
    prime=false; 
    } 
    } 
    if prime==true { 
    a[#a+1]=i; 
    } 
    } 
    for (i=1;i<=#a;i++) { 
    print(a[i]); 
    } 
} 
} 
+0

投稿したコードは有効ではありません。C++。たとえば、if文が無効です。また、不均等な数の中カッコがあります。 –

+0

申し訳ありませんが、そのコードはC++では有効ではありません。あなたはCの標準的な数学ライブラリのC + +の適応を使用している、それは数学関数のクラスではありません。 if文の条件のまわりに括弧がありません。指定されていない整数の配列に整数を代入しています。また、初心者には戻り値がありません。また、私が見逃したいくつかの小さな事があります。 – identity

+0

たとえば、 'int a [] = 2;'は完全に無意味です。 –

答えて

6

はい。 std::vectorまたはstd::dequeを使用してください。

+1

STLは間違いなくC++のコレクションのために行く方法です。 [こちら](http://www.cs.brown.edu/~jak/proglang/cpp/stltut/tut.html)は、迅速かつ包括的なチュートリアルであり[こちら](http://www.sgi。 com/tech/stl/table_of_contents.html)はSTLの主なドキュメントです。 –

+0

ありがとうございます。それはまさに私がやったことです。それはうまくいったが、残りのコードはどこにでもエラーでいっぱいである。XD – TimeCoder

+0

@TimeCoder:コードが完全に完全に壊れているからだ。あなたはLuaをC++に変換することはできません。彼らは異なる言語です。 –

1

どこでも使用しているこの#記号は何ですか?

お客様の回線int a[]=2が間違っています。

あなたの配列の大きさを指定する必要があります。たとえば、int a[100]、または int a[] = {Values here}です。

おそらく、ベクトルクラスのような柔軟なサイズの配列が必要でしょう。

1

コンパイラは、割り当てる領域を知る必要があるため、要素の数を指定する必要があります。

配列の代わりにSTLベクターを使用できます。これにより、最初に番号を指定することなく、必要な数だけ要素を追加できます。

http://www.cplusplus.com/reference/stl/vector/vector/

1

のみのアレイに割り当てることのできるメモリの量によって場合は、必ず「限られた」です。

これは、おそらくstd::vectorを使ってうまくいくでしょう。

関連する問題