Когда следующие l oop прерываются,
while (cin >> input)
{
...
}
нечего читать из cin
или cin
в состоянии ошибки. Следовательно, попытка чтения из cin
завершается неудачно в строке
cin >> element;
. Поэтому программа переходит прямо к следующей строке.
Для решения проблемы
Вырвитесь из while
l oop после того, как прочитали SIZE
количество элементов.
Вырвитесь из while
l oop, введя неверный ввод. В этом случае вам придется очистить состояние cin
, отменить строку ввода, а затем продолжить.
Вы можете выполнить sh, используя оба.
while (capacity < SIZE && cin >> input)
{
a[capacity] = input;
capacity++;
}
// Did the while loop stop because of size or bad input?
if ( capacity < SIZE )
{
// Bad input.
// Clear the state of cin.
// Read and discard the rest of the line.
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
Теперь вы можете продолжать читать с cin
.
PS
Добавить
#include <limits>
, чтобы быть возможность использовать std::numeric_limits
.