Исключая нецелые входные данные - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь вывести "Rose", когда S является положительным целым числом и >= 5. Однако, когда я ввожу 5.1, вывод все равно "Rose". Я не могу понять это :( [edit: я забыл сказать, что S - нечетное положительное число, поэтому я включаю S%2 == 1 в свой код]

#include <iostream>

using namespace std;

int main()
{
    int S;
    cout << "Please input the size of a rose: " << endl;
    cin >> S;
    if (S%2 == 1 && S >= 5 && sizeof(S) == 4) {
        cout << "Rose" << endl;
    }
    else {
        cout << "Invalid input size!" << endl;
    }
}

1 Ответ

0 голосов
/ 27 февраля 2020

S имеет тип "int", поэтому при вводе 5.1 только 5 будет считываться в S. Одно из решений - прочитать S1 как двойное (или строку и т. Д. c) и проверить, представляет ли оно целое число , Если это так, преобразуйте их в int и сохраните в S, в противном случае выведите сообщение об ошибке.

...