2017-06-15 8 views
0

このプログラムでは、file.txtに格納されている特定の数の値を扱うように求められます。クラスの関数を返す配列を作成してメインに呼び出して保存する方法

私はabs_freq []という関数で作成された配列へのポインタを返すAbsolute_frequencyというパブリック関数を持つクラスを持っています。私の問題は、今は私のメインの別の配列にこの配列を保存する必要があるということです。私は、配列abs_freqをテストしてきたものから、

int *Data::Absolute_frequency() { 

/*Here I created 2 arrays that store values representing max and min limit 
of certain intervals (eg. 0 to 20, 21 to 40, 41 to 60, etc...) 

And then I run my code thru each of these intervals and count how many 
values are in them, and store it in abs_freq[]:*/ 

int *abs_freq=new int [num_intervals](); 

for (int j = 0; j < num_values; j++) 
{ 
    for (int i = 0; i < num_intervals; i++) 
    { 
     if (values[j] >= intervals_min[i] && values[j]<=intervals_max[i]) 
     { 
      abs_freq[i]++; 
     } 
    } 
} 

return abs_freq; 
} 

[i]がsuposedれるもの格納している、今私の問題は)私は(私のメインの中にこの配列を渡す必要があるということです。私はこのような何かを試してみましたが、私は期待していたとして、それだけabs_freqの第一値渡さ:

int main(){ 

Data data; 
int *absolute_freq = new int[num_intervals](); 
... 
    for (int i = 0; i < num_intervals; i++) 
    { 
     absolute_freq[i] = *data.Absolute_frequency(); 
    } 

    for (int i = 0; i < num_intervals; i++) 
    { 
     printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]); 
    } 
    .... 
} 

は、どのように私だけではなく、第一値の配列全体を格納することができますか?

+1

コンパイル時にサイズがわからない場合は 'std :: vector'を、それ以外の場合は' std :: array'を使用してください。 Cタグの答えが必要な場合は、そのようにタグを付けます。 – Slava

答えて

3

あなたはmain関数内のポインタ変数を持つことによってそれを行うには、関数によって返されたポインタで初期化:

int* absolute_freq = data.Absolute_frequency(); 

あなたは配列を使用して完了したら、あなたがdelete[]に持っていることを忘れないでください、それ。

0

コードfor (int i = 0; i < num_intervals; i++) { absolute_freq[i] = *data.Absolute_frequency() ...では、整数の新しい配列を作成するたびに関数Absolute_frequencyを何度も呼び出すことになります(自由ではありません)。さらに、*data.Absolute_frequency()data.Absolute_frequency()[0]に相当します。つまり、常に配列の最初のエントリが得られます。

あなたが実際に達成しなければならないことがわかりません。

int *absolute_freq = data.Absolute_frequency(); 
for (int i = 0; i < num_intervals; i++) 
{ 
    printf("Absolute frequency interval %d: %d \n", i+1,absolute_freq[i]); 
} 
delete[] absolute_freq; 
関連する問題