У меня проблема в моей программе с моей функцией insertElement (). Я намеревался сделать insertElement, чтобы взять индекс из прототипа и переместить все значения вправо, включая значение этого индекса, вправо ОДИН РАЗ. Итак, если бы у меня был мой массив {1, 2, 3, 4}, и я хотел бы вставить значение «10» в индекс «2», результирующий массив был бы {1, 2, 10, 3, 4 }.
Я знаю, что мне нужно настроить функцию insertElement (), чтобы исправить эту проблему, но я не уверен, с чего начать, кто-нибудь может мне помочь? Вот мой код:
#include <iostream>
using namespace std;
const int CAPACITY = 20;
void displayArray(int array[], int numElements)
{
for (int i = 0; i < numElements; i++)
cout << array[i] << " ";
cout << endl;
}
bool insertElement(int array[], int& numberElements, int insertPosition, int insertTarget)
{
int p = 0;
int j = 1;
int arrayPositionFromLast = (numberElements-1);
if (numberElements>=CAPACITY)
{
cout << "Cannot insert an element, array is full." << endl;
return false;
} else {
for (int i=arrayPositionFromLast; i>insertPosition; i--)
{
array[arrayPositionFromLast-p]=array[arrayPositionFromLast-j];
p++;
j++;
}
array[insertPosition] = insertTarget;
}
return true;
}
int main()
{
int array[6] = {1, 2, 3, 4, 5, 6};
int numArrayElements = 6;
int endOfArrayValue, insertedValue, insertedValuePosition;
cout << "Enter a value and a position to insert: ";
cin >> insertedValue >> insertedValuePosition;
insertElement(array, numArrayElements, insertedValuePosition, insertedValue);
displayArray(array, numArrayElements);
}