Как уже упоминалось в комментариях, у вас есть пара проблем в вашем коде.
Все, что укусит вас в конце концов, когда вы будете писать больше кода.
Многие из них могут быть переданы вам средствами компилятора. Например, используя -Weverything
в clang .
Чтобы выбрать наиболее важные из них:
source.cpp: 8: 10: предупреждение: объявление скрывает локальную переменную [-Wshadow]
для (int i = 15; i <= 20; i ++) </p>
и
source.cpp: 6: 26: предупреждение: неиспользуемая переменная 'i' [-Wunused-variable]
vector arrmain; int i, j;
Помимо этого, у вас есть логическая проблема в вашем коде:
for values to check
if value is ok
print all known correct values
Это приведет к: 16, 16, 20 при запуске.
Вместо этого вы хотите изменить область печати, чтобы она не печаталась при каждом совпадении.
Наконец, ошибка, которую вы видите:
for(j=0; j<=arrmain.size(); j++)
{
cout <<arrmain[i]<< " "<<endl;
}
Эта ошибка является результатом неправильного именования, позвольте мне переименовать, чтобы вы увидели проблему:
for(innercounter=0; innercounter<=arrmain.size(); innercounter++)
{
cout <<arrmain[outercounter]<< " "<<endl;
}
Теперь должно быть ясно, что вы используете неправильную переменную для индексации вектора. Это будут индексы 16 и 20 в векторе с максимальным размером 2. Поскольку эти индексы находятся за пределами вектора, у вас неопределенное поведение. При использовании правильного индекса <=
также заставляет вас выйти за 1 индекс за пределы вектора, вместо этого используйте <
.
Помимо использования лучших имен для ваших переменных, я бы рекомендовал использовать диапазон, основанный на. Это доступно начиная с C ++ 11.
for (int value : arrmain)
{
cout << value << " "<<endl;
}