Я не смотрел на ваш код, но ваш массив должен быть достаточно большим, чтобы содержать все значения, которые вы будете хранить в нем. 100, безусловно, не будет достаточно для большинства входных данных для этой проблемы.
например. этот код ..
int someArray[100];
someArray[150] = 10;
Записывает в место, которое больше массива (150> 100). Это известно как перезапись памяти. В зависимости от того, что произошло в этой области памяти, ваша программа может аварийно завершить работу немедленно, позже или вообще не работать.
Хорошая практика при использовании массивов состоит в том, чтобы как-то утверждать, что элемент, в который вы пишете, находится в пределах массива. Или используйте класс типа массива, который выполняет эту проверку.
Для вашей проблемы проще всего было бы использовать векторный класс STL. Хотя вы должны добавить элементы (vector :: push_back ()), вы можете позже получить доступ к элементам, используя оператор массива []. Vector также даст вам лучшую итеративную производительность.
Вот пример кода добавления чисел 0-100 к вектору и последующей их печати. Обратите внимание, что во втором цикле мы используем количество элементов, хранящихся в векторе.
#include <vector> // std::vector
...
const int MAX_ITEMS = 100;
std::vector<int> intVector;
intVector.reserve(MAX_ITEMS); // allocates all memory up-front
// add items
for (int i = 0; i < MAX_ITEMS; i++)
{
intVector.push_back(i); // this is how you add a value to a vector;
}
// print them
for (int i = 0; i < intVector.size(); i++)
{
int elem = intVector[i]; // this access the item at index 'i'
printf("element %d is %d\n", i, elem);
}