codingBlonde Ответов: 2

Может ли кто-нибудь помочь мне разобраться в этой проблеме с динамическим массивом в C++?


Ответьте на следующие вопросы о динамических массивах:

/* Функция, считывающая последовательность целых чисел из входных данных (с длиной последовательности, за которой следует b
Например, если длина равна 3, а числа равны
123 345 99 тогда возвращаемый массив будет иметь размер 3 и хранит значения 123, 345 и 99
@param length: при возврате сохраняет длину/размер массива
@возвращает указатель, указывающий на массив
*/

int * ReadNumberSequence (int & size)
{
int * array = NULL; // инициализируйте указатель на NULL
делать {
cout <<"введите длину номерной серии:";
cin >> размер;
} while (size<=0);

// Todo: напишите инструкцию для выделения памяти для массива.
// Примечание: мы знаем только значение размера во время выполнения, поэтому нам нужно динамически

// выделите память для этого массива

// Todo: напишите цикл для чтения размера # int из входных данных и сохраните их в массиве //


возвращаемый массив;
}

тап_п()
{
// Задач: переменные delcare необходимо


//Todo: вызов функции ReadNumberSequence для чтения последовательности чисел


//Задачи: запись цикла


отображение элементов в возвращаемом массиве ...
//Todo: освободите массив, возвращаемый ReadNumberSequence.

}

Что я уже пробовал:

вот что я делал до сих пор:

int * ReadNumberSequence (int & size)
{
int * array = NULL; // инициализируйте указатель на NULL
делать {
cout <<"введите длину номерной серии:";
cin >> размер;
} while (size<=0);

// Todo: напишите инструкцию для выделения памяти для массива.
array = new int [размер];

for (int i = 0; i < size; i++)
{
// что я здесь пишу
}

тап_п ()
{

}

2 Ответов

Рейтинг:
1

CPallini

Грифф дал тебе решение. Я дам вам представление о более современном C++

#include <iostream>
#include <utility>

using namespace std;

pair< int * , size_t> read_sequence()
{
  size_t size;
  cout << "please enter array size:\n";
  cin >> size;

  int * array = new int[size];

  for (size_t n=0; n<size; ++n)
  {
    cout << "please enter item " << n << "\n";
    cin >> array[n];
  }
  return make_pair( array, size);
}

int main()
{
  auto [ array, size] = read_sequence();
  for ( size_t n = 0; n<size; ++n)
    cout << "array[" << n << "] = " << array[n] << "\n";

  delete [] array;
}


Рейтинг:
0

OriginalGriff

Цитата:
// что я здесь пишу

Что ж... вы можете попробовать это:
cin>> array[i];
Но я бы, вероятно, добавил некоторую проверку ошибок, чтобы убедиться, что пользователь набрал правильный номер. Вы можете очень легко проверить правильность ввода: Пользовательский ввод целых чисел - обработка ошибок[^]