Кажется, проблема вызвана путаницей в индексах массива. В C ++ массивы начинаются с 0, поэтому допустимые индексы для массива размера n равны 0,1, ..., n - 1. Для этого есть веские причины, и как только вы становитесь опытным программистом, это становится второй натурой, но раздражающие пользователи настаивают при подсчете от 1 и так для пользователей допустимыми индексами массива размера n являются 1,2, ..., n.
Лучший способ избежать путаницы - это преобразовывать пользовательские индексы в индексы C ++ непосредственно при вводе (или непосредственно перед выводом). Таким образом, большая часть вашего кода использует схему индексации C ++ (достаточно разумно, поскольку это программа C ++).
Применяя это к коду выше, вы получаете
int pos;
cin >> pos;
--pos; // convert from user indexes to C++ indexes
if (pos >= 0 && pos < size) // C++ indexes
{
for (i = pos + 1; i < size; i++) // C++ indexes
{
arr[i - 1] = arr[i];
}
--size; // array is now smaller
cout << "Elements now:" << endl;
for (i = 0; i < size; i++) // C++ indexes
cout << arr[i] << endl;
}
else
cout << "Element doesn't exist" << endl;
В вашем коде немного смущает переменная count
. Я понятия не имею, что это такое, то, как вы используете это, не имеет смысла для меня, поэтому я проигнорировал это, но вы, вероятно, не должны.