最高の選択肢は、責任を分けることです。 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;
C++ソリューションは 'のstd :: vector'を使用することです。それは、必要に応じて成長し縮小することができ、それ自体のサイズを知っています。 –
@rllstpwz C++は可変長配列をサポートしていません。標準のコンテナstd :: vectorを使うべきです。 –
私はベクトルを使用するはずがありません。 – rllstpwz