#include <iostream>
int user_input()
{
std::cout << "Enter your num: ";
int user_num;
std::cin >> user_num;
return user_num % 2;
}
bool isEven()
{
if (user_input() == 0)
{
return true;
}
else
{
return false;
}
}
void output()
{
if (isEven() == true)
{
std::cout << "Your num is even" << std::endl;
}
else
{
std::cout << "Your num is odd" << std::endl;
}
}
int main()
{
user_input();
output();
}
C/C++
Почему два раза просит ввод с++ да я хочу именно так это сделать не ругайетсь
Первый раз ты явно вызываешь user_input() - и программа запрашивает ввод.
А второй раз ты вызываешь output(), которая вызывает isEven(), которая вызывает user_input() - и программа запрашивает ввод.
А второй раз ты вызываешь output(), которая вызывает isEven(), которая вызывает user_input() - и программа запрашивает ввод.
Ваш код запрашивает ввод пользователя дважды, потому что функция user_input() вызывается дважды: один раз в функции isEven() и еще раз в функции main(). Чтобы исправить это, вы можете вызвать функцию user_input() только один раз в функции main() и сохранить ее результат в переменной, которую затем можно передать в функцию isEven(). Вот пример исправленного кода:
#include
int user_input()
{
std::cout > user_num;
return user_num % 2;
}
bool isEven(int user_num)
{
if (user_num == 0)
{
return true;
}
else
{
return false;
}
}
void output(bool even)
{
if (even == true)
{
std::cout
Причина, по которой у вас два раза просит ввести число, заключается в том, что вы вызываете функцию `user_input()` дважды: один раз в `main()` и один раз в `isEven()`.
Вот исправленный код, который просит ввести число только один раз:
```cpp
#include <iostream>
int user_input()
{
std::cout << "Enter your num: ";
int user_num;
std::cin >> user_num;
return user_num;
}
bool isEven(int num)
{
return num % 2 == 0;
}
void output(bool even)
{
if (even)
{
std::cout << "Your num is even" << std::endl;
}
else
{
std::cout << "Your num is odd" << std::endl;
}
}
int main()
{
int num = user_input();
output(isEven(num));
}
```
Теперь `user_input()` только запрашивает и возвращает число, в то время как проверка на четность производится в функции `isEven()`. Функция `output()` теперь принимает булево значение, указывающее, является ли число четным или нет, и выводит соответствующее сообщение.
Вот исправленный код, который просит ввести число только один раз:
```cpp
#include <iostream>
int user_input()
{
std::cout << "Enter your num: ";
int user_num;
std::cin >> user_num;
return user_num;
}
bool isEven(int num)
{
return num % 2 == 0;
}
void output(bool even)
{
if (even)
{
std::cout << "Your num is even" << std::endl;
}
else
{
std::cout << "Your num is odd" << std::endl;
}
}
int main()
{
int num = user_input();
output(isEven(num));
}
```
Теперь `user_input()` только запрашивает и возвращает число, в то время как проверка на четность производится в функции `isEven()`. Функция `output()` теперь принимает булево значение, указывающее, является ли число четным или нет, и выводит соответствующее сообщение.
Похожие вопросы
- Язык С почему при обращении к отдельным символам массива/строкам, а именно str[0-1] то есть индекс -1 выводит значение 0
- C++. Как сделать ввод переменной (размера) на основе которой будет ввод массива?
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Перегрузка операторов ввода-вывода для файловых потоков
- Почему в С++ в отличии от других языков команда ввода-вывода использует << вместо стандартных ();?
- Как запретить ввод символов? С++
- Как через регулярный выражения запретить ввод букв?
- Ввод массива строк с помощью рекурсии
- Скоро сдача, а я не успеваю всё сделать, помогите. Прошу вас... С/С++
- Почему нельзя освободить выделенную память для элемента массива или как это сделать правильно?