Я пытался создать простой цикл while для преобразования чисел в вектор с некоторой базовой проверкой входных данных.Тем не менее, я нахожу некоторые странные вещи, происходящие с моим кодом.Я пытаюсь сделать так, чтобы пользователь мог вводить числа, пока они не введут «0», что затем завершит цикл.Это отлично работает.
Однако я также пытаюсь сделать так, чтобы, если они вводят не-int (то есть 3.4, a), или если они вводят отрицательное число, оно выводит «BAD INPUT» и затем выходит из программы.,Когда я набираю отрицательное число, оно работает нормально.Но когда я набираю не-int, он ничего не делает, но все равно выходит из программы ...
Аналогично, я также пытаюсь сделать так, чтобы, если они вначале набрали '0',без предварительного ввода каких-либо чисел, он выводит «NO NUMBERS» и выходит из программы.Этот также выходит из программы, но опять же, ничего не делает.
Мой код выглядит следующим образом:
#include <iostream>
#include <vector>
//I know it is considered bad practice for the below part.
using namespace std;
int main()
{
vector<int> numberStorage;
while (cin) {
int numInput = 0;
cin >> numInput;
if (numInput == 0) break;
if (!cin || numInput < 0) {
cout << "BAD INPUT" << '\n';
return false;
}
if (numInput == 0 && numberStorage.size() == 1) {
cout << "NO NUMBERS" << '\n';
return false;
}
numberStorage.push_back(numInput);
}
return 0;
}
Кто-нибудь может мне помочь и уточнить, где моя логика / код не работает здесь, на этих входных проверках?Спасибо за любую помощь.