Давайте сделаем проработанный пример
How many numbers do you want?
2
Теперь arrlimit == 2, arr имеет размер 1, checkarr имеет размер 1
Insert numbers (non negative integers only)
1
Теперь arrvalue == 1, arrLoop == 0, arr [0] == 1, checkarr [0] == 2
Insert numbers (non negative integers only)
1
Теперь arrvalue == 1, arrLoop == 1, arr [1] == 1, checkarr [1] == 2. Последние два являются ошибкой, потому что arr
и checkarr
имеют размер 1, поэтому arr[1]
и checkarr[1]
являются незаконными. Но давайте проигнорируем это и продолжим.
Теперь мы находимся в последнем цикле, arrcheck == 0, поэтому arr[abs(checkarr[arrCheck])] >= 0
==> arr[abs(checkarr[0])] >= 0
==> arr[abs(2)] >= 0
==> arr[2] >= 0
, и снова arr [2] недопустим, потому что arr имеет только размер 1.
И так далее, в основном ваш код создает множество массивов за пределами доступа. Но, честно говоря, даже без них я не уверен, что алгоритм правильный.