가장 좋은 방법은 책임을 분리하는 것입니다. 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++ 솔루션은'표준 : vector'을 사용하는 것입니다. 필요에 따라 확장 및 축소가 가능하며 자체 크기를 알고 있습니다. –
@rllstpwz C++은 가변 길이 배열을 지원하지 않습니다. 표준 컨테이너 std :: vector를 사용해야합니다. –
나는 벡터를 사용하지 않아야한다. – rllstpwz