Почему не срабатывает функция?
Я совсем новичок, написал вот такую программу:
bool isEven()
{
cout << "Enter the number ";
int x;
cin >> x;
int y = 0;
y = x % 2;
if (y == 0) {
cout << "You number is even" << endl;
return true;
}
else {
cout << "You number is not even" << endl;
return false;}
}
int main()
{
bool isEven();
return 0;}
И понять не могу, какого она не работает. Все проверил степпингом. Строчка в main "bool isEven();" попросту игнорируется! Помогите, пожалуйста.
Ответы (2 шт):
Смысл у Вашей строчки получился не тот, который Вы думаете.
bool even = isEven();
или
isEven();
Дело в том, что
bool isEven();
это объявление функции (т.е. "где-то есть такая функция - isEven, возвращает bool").
Чтобы ее вызвать, не надо писать bool. Можно вызвать
isEven();
Можно - если надо ее результат - присвоить его переменной типа bool.
И я бы переписал вашу функцию короче:
bool isEven() {
cout << "Enter the number ";
int x;
cin >> x;
x %= 2;
cout << "You number is " << (x ? "not " : "") << "even" << endl;
return x;
}
Хотя на самом деле функция isEven() не должна заниматься такими детали, как вводить числа и выводить что-то. Каждая функция должна при хорошем дизайне делать только свой часть работы.
bool isEven(int n) { return n%2 == 0; }
int readInt() {
cout << "Enter the number ";
int x;
cin >> x;
return x;
}
void print(bool even) {
cout << "You number is " << (!even ? "not " : "") << "even" << endl;
}
int main() {
print(isEven(readInt()));
}