我有一个问题,似乎我找不到一个能够解决这个问题的正确答案......所以我有这个静态数组arr [some_number]我希望有一个菜单可以处理该数组。当然,其中一个选项是填充数组。一切都应该是单独的功能。这是第一个:`
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
传递给另一个函数,这样它就能说明用户输入的元素数量而不是数组的const大小。提前谢谢。
答案 0 :(得分: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;