Проблема
bad
не сбрасывается после ее обработки.
Решение
Переместите bool bad = false;
в тело while (!inFile.eof())
l oop, чтобы оно сбрасывается при каждой итерации. Если вы определяете переменные с максимально узкой областью действия, вы обычно можете избежать этой проблемы, поэтому вам настоятельно рекомендуется сделать то же самое с остальными вашими переменными.
Это решит проблему, о которой было сказано, и, по крайней мере, еще одна ошибка, которую вы еще не нашли. Это оставляет по крайней мере еще две нерешенные ошибки, которые вы должны устранить, и обе они были рассмотрены в комментариях вопроса.
TL; версия DR
Быстрый просмотр ввода 1 2 3 4 -1 1 2 3 4 5 6 7 8 -1 1 2 3 4 5 -1
1 2 3 4 -1
анализируется и определяется как bad
, поэтому для bad
установлено значение true, и тестирование слишком длинного значения и очистки пропускается. Файл не закончился, поэтому программа зацикливается и начинает чтение следующего массива.
оставшийся ввод:
1 2 3 4 5 6 7 8 -1 1 2 3 4 5 -1
вывод на данный момент:
1 2 3 4
The array does not have enough integers
1 2 3 4 5 6
разобрано. Это заполняет массив и цикл for
завершается. bad
по-прежнему true
, поэтому проверка на переполнение пропускается, и сообщение не печатается .
Осталось ввода:
7 8 -1 1 2 3 4 5 -1
вывод пока:
1 2 3 4
The array does not have enough integers
1 2 3 4 5 6
Теперь 7 8 -1
анализируется. Это слишком короткий, чтобы быть массивом и сообщать. Обратите внимание на то, что это делает с выходом.
Осталось ввода:
1 2 3 4 5 -1
Вывод пока:
1 2 3 4
The array does not have enough integers
1 2 3 4 5 6 7 8
The array does not have enough integers
Упс. Похоже, 1 2 3 4 5 6 7 8
, а не просто 7 8
, было слишком коротким.
Затем программа анализирует 1 2 3 4 5
и находит его слишком коротким.
Осталось ввода:
вывод на данный момент:
1 2 3 4
The array does not have enough integers
1 2 3 4 5 6 7 8
The array does not have enough integers
1 2 3 4 5
The array does not have enough integers