2017-11-13 5 views
-2

私は問題があり、そのトリックを行う適切な答えを見つけることができないようです...だから、私はこの静的配列arr [some_number]を持っていますし、その配列で何かをするメニューを持っていたいと思います。もちろん、オプションの1つは配列を塗りつぶすことです。すべてが別々の機能でなければなりません。ここでは最初のものである: `配列サイズを異なる関数に渡すには?

void fill_array(int arr[], const int size) { 
int n; 
cin >> n; 
for (int i = 0; i < n; i++) { 
    cin >> arr[i]; 
} 
} 

`

彼は、アレイ、OBVのために望んでいるどのくらいの要素をユーザーの入力をさせるためのオプションがあるはずです。 n < some_numberしかし、これは私の質問になります:変数nをこの特定のケースで別の関数に渡すにはどうすればいいですか?前もって感謝します。

+1

C++ソリューションは 'のstd :: vector'を使用することです。それは、必要に応じて成長し縮小することができ、それ自体のサイズを知っています。 –

+0

@rllstpwz C++は可変長配列をサポートしていません。標準のコンテナstd :: vectorを使うべきです。 –

+0

私はベクトルを使用するはずがありません。 – rllstpwz

答えて

0

最高の選択肢は、責任を分けることです。 fill_array()のような関数では、配列サイズの入力をユーザーに求めるプロンプトはありません。事前にユーザーに確認

void fill_array(int arr[], const int size) 
{ 
    for (int i = 0; i < size; i++) 
     cin >> arr[i]; 
} 

、および必要に応じて、あなたの関数に入力されたサイズを渡し、例えば:それは既にあるとしてだけでその値を使用し、入力として渡されるサイズ値を持つ

int ask_user_for_size(int max_number) 
{ 
    int n; 
    do 
    { 
     cout << "Enter a number between 1 - " << max_number << ": "; 
     cin >> n; 
     if ((n > 0) && (n <= max_number)) break; 
     cout << "Invalid number, try again" << endl; 
    } 
    while (true); 
    return n; 
} 

void fill_array(int arr[], const int size) 
{ 
    for (int i = 0; i < size; i++) 
     cin >> arr[i]; 
} 

void output_array(const int arr[], const int size) 
{ 
    for (int i = 0; i < size; i++) 
     cout << arr[i]; 
} 

... 

int arr[some_number]; 
int n = ask_user_for_size(some_number);  
cout << "Enter " << n << " numbers: "; 
fill_array(arr, n); 
output_array(arr, n); 
また

:ほとんどのアレイの問題へ

int ask_user_for_size() 
{ 
    int n; 
    do 
    { 
      cout << "Enter a number greater than 0: "; 
      cin >> n; 
      if (n > 0) break; 
      cout << "Invalid number, try again" << endl; 
    } 
    while (true); 
    return n; 
} 

void fill_array(int *arr, const int size) 
{ 
    for (int i = 0; i < size; i++) 
     cin >> arr[i]; 
} 

void output_array(const int *arr, const int size) 
{ 
    for (int i = 0; i < size; i++) 
     cout << arr[i]; 
} 

... 

int n = ask_user_for_size(); 
int *arr = new int[n]; 
cout << "Enter " << n << " numbers: "; 
fill_array(arr, n); 
output_array(arr, n); 
delete[] arr; 
+0

返信いただきありがとうございます。私は私の質問を見て、私は私の問題を非常にうまく指定していないと思う:私は静的な配列とポインタを使用する必要があります。また、私は2つの関数があると言うことができます。最初に、入力する要素の数を入力する必要があるかどうかを選択する必要があります。入力する場合と2番目の要素で出力する場合がありますが、すべての要素に値がない場合、 5桁または6桁の数字。 – rllstpwz

+0

これは、要素の数を別の関数に渡して、私が読み書きできないようにするためですが、先頭にある配列のconstサイズ全体ではありません。 – rllstpwz

+0

私の回答を更新しました –

関連する問題