Вы не инициализировали логический массив found
.Доступ к неинициализированным переменным приведет к неопределенному поведению.
Вы должны сделать это:
bool found[year] = {false};
Это инициализирует все члены массива переменной false
.
.массивы длины не являются частью стандарта.Хотя GCC поддерживает их как расширение, не каждый компилятор поддерживает.Таким образом, вы должны иметь постоянную времени компиляции в качестве размера массива.
constexpr int year = 365;
Другим источником неопределенного поведения является следующая проверка:
if (found[birthday] == true)
Поскольку birthday
в диапазоне от 1
до 365
, found[365]
вызовет выход изограничивает доступ в качестве допустимого диапазона индекса от 0
до 364
.Таким образом, вы можете использовать эту проверку вместо:
if (found[birthday-1] == true)