Я разрабатываю программу для чтения нескольких пользовательских вводов, и в спецификациях указано, что они всегда являются положительными целыми числами. Затем эти значения будут изменены, чтобы сохранить только значение сотен, и использоваться для отображения гистограммы. У меня проблема с проверкой ввода программы. Если пользователь игнорирует инструкции и вводит десятичное значение вместо целого, сразу же отображается остальная часть выходных данных программы без возможности для пользователя вводить какие-либо дополнительные значения. Моя попытка поймать эту проблему показана ниже в операторах if.
int main() {
int store1;
int store2;
cout << "Enter today's sales for store 1:" << endl;
cin >> store1;
if(store1 < 0 || ((store1 % 1))!=0)
cout << "Value of sales must be an integer greater than zero" << endl;
cout << "Enter today's sales for store 2:" << endl;
cin >> store2;
if(store2 < 0 || ((store2 % 1))!=0)
cout << "Value of sales must be zero or greater" << endl;
Если пользователь вводит десятичное число, программа выводит:
Enter today's sales for store 1:
400.34
Enter today's sales for store 2:
Enter today's sales for store 3:
Value of sales must be zero or greater
Enter today's sales for store 4:
Enter today's sales for store 5:
SALES BAR CHART
(Each * = $100)
Store 1: ****
Store 2:
Store 3:
Store 4:
Store 5:
Process finished with exit code 0
Если бы мне пришлось угадывать, значения после десятичного числа (в данном случае 3 и 4) были переданы для ввода для магазина 2 и 3 соответственно, и поскольку они были меньше 100, * не отображался рядом с соответствующим магазином. Я не включил свой код, чтобы получить сотни значений и вывод * для удобства чтения, и, поскольку я почти уверен, что моя проблема связана с cin.
Подводя итог, мне нужно проверить ввод пользователя, чтобы через любой метод ввода принималось только положительное целое число. Любая помощь с благодарностью!