с++ не работает условие

130
01 декабря 2020, 20:50

цикл 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]; }
}
Answer 1

А что удивительного?

(a[j] != a[i]) || (j < a.size())

Если за пределами массива вернется a[j] (а тут UB, может быть что угодно...), не равное a[i], то первая часть условия истинна, а значит, истинно и все выражение.

Вы, наверное, хотели написать

(j < a.size()) && (a[j] != a[i])

и именно в указанном порядке!

READ ALSO
Одновременно не выводятся оба QLineSeries

Одновременно не выводятся оба QLineSeries

В данном фрагменте кода я пытаюсь вывести некий график с двумя SeriesДля более быстрого вывода я удаляю, заполняю Series и затем добавляю их обратно

101
Очистить буфер ввода

Очистить буфер ввода

Пытаюсь написать кроссплатформенную функцию, аналог system("pause");

119
Как добавить программу в автозагрузку Windows используя C/C++?

Как добавить программу в автозагрузку Windows используя C/C++?

Можно ли добавить программу в автозагрузку с помощью C/C++? (без WinAPI)

129
Объясните как работает алгоритм с++

Объясните как работает алгоритм с++

Как работает этот алгоритм, в особенности интересует 13,15,16,18 строкиКонечно ясно что он выводит номер последнего вхождения подстроки и количество...

106