Ваша функция должна выполнять следующие действия: 1) Уметь проверять, приведет ли текущий вызов присоединения к попытке записи за пределы. Таким образом, вам нужно что-то вроде (и дать переменные объяснительные имена, подобные этому) в первой строке вашей функции:
if (array_size < item_count) {
//double size of array
}
Чтобы удвоить размер массива, вы должны создать новый массив с удвоеннойsize, скопируйте все элементы из старого массива, УДАЛИТЕ старый массив, обнулите указатель старого массива и каким-то образом обновите переменную array_size (возврат в main - это одна опция, статический счетчик int в самой функции - другая). Возможно, вам также придется вернуть указатель на новый массив в main. Или, может быть, вы можете просто переадресовать старый указатель на новый массив ПОСЛЕ использования этого указателя для удаления старого массива. Это все о том, как избежать утечек памяти. Итак, попробуйте придумать объявление метода, например:
int append(int* arrPtr, int value, int array_size, int item_count)
Этот конкретный подход означает, что main возвращает каждый раз размер массива в виде int после каждого добавления. Таким образом, вам нужно что-то в основном, например:
array_size = append(array, val, array_size, item_count);
Сложная часть будет при создании нового массива:
array_size = 2 * array_size;
int* temp = new int[array_size]
//copy everything over from old array to new using arrPtr and temp
for (int i = 0; i < array_size / 2; i++) {
temp[i] = arrPtr[i]
}
//delete the contents of the old array:
delete[] arrPtr;
//pointer gymnastics to redirect arrPtr to the new array:
arrPtr = temp;
temp = nullptr;
//okay, now you are back out of the conditional and can use item_count to insert the
//value into the array (doubled or not)
arrPtr[item_count] = value;
//don't forget to return array_size, and remember main must track item_count as well.
return array_size;
Это общая суть. Это не полный ответ, но должно дать вам достаточно для работы. По сути, большая часть вашего кода должна быть переписана, и вышеизложенное не является полным решением. Удачи.