цикл while срабатывает и при значениях j больше размера массива
int k = 0;
int s = a.size() + 1;
for (int i = 0; i < a.size() - 1; i++)
{
int j = i + 1;
while ((a[j] != a[i])||(j < a.size()))
{
j++;
}
if (j - i < s) { s = j - i; k = a[i]; }
}
А что удивительного?
(a[j] != a[i]) || (j < a.size())
Если за пределами массива вернется a[j]
(а тут UB, может быть что угодно...), не равное a[i]
, то первая часть условия истинна, а значит, истинно и все выражение.
Вы, наверное, хотели написать
(j < a.size()) && (a[j] != a[i])
и именно в указанном порядке!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В данном фрагменте кода я пытаюсь вывести некий график с двумя SeriesДля более быстрого вывода я удаляю, заполняю Series и затем добавляю их обратно
Можно ли добавить программу в автозагрузку с помощью C/C++? (без WinAPI)
Как работает этот алгоритм, в особенности интересует 13,15,16,18 строкиКонечно ясно что он выводит номер последнего вхождения подстроки и количество...