Описать функцию bool IsCorrect(int n1, int n2) для определения, является ли введенный пользователем интервал корректным. Описать функцию bool IsPres(int n, int m) для определения, содержит ли число n цифру m. Решить задачу: определить количество нечетных чисел, содержащих введенную пользователем цифру, на интервале [а, b] с использованием разработанных функций. Язык С++. Консоль. Windows
Конечно! Ниже приведено подробное решение задачи на языке C++. Мы создадим две функции: `IsCorrect` и `IsPres`, а также решим задачу подсчета количества нечётных чисел с определенной цифрой на интервале `[a, b]`. Объяснения будут пошаговые, чтобы было понятно, как всё работает.
---
### Общее описание
1. **Функция `IsCorrect(int n1, int n2)`**
Проверяет, является ли интервал `[n1, n2]` корректным.
— корректный, если `n1 <= n2`.
2. **Функция `IsPres(int n, int m)`**
Проверяет, содержит ли число `n` цифру `m`.
— для этого последовательно сравниваем каждую цифру числа `n` с `m`.
3. **Основная логика**
— пользователь вводит диапазон `[a, b]` и цифру `m`.
— программа подсчитывает числа в диапазоне, которые нечётные и содержат цифру `m`.
---
### Код решения
```cpp
#include
using namespace std;
// Проверка правильности интервала
bool IsCorrect(int n1, int n2) {
return n1 <= n2;
}
// Проверка, содержит ли число n цифру m
bool IsPres(int n, int m) {
int digit;
while (n > 0) {
digit = n % 10; // извлекаем последнюю цифру
if (digit == m) {
return true; // нашли нужную цифру
}
n /= 10; // удаляем последнюю цифру
}
return false; // цифра не найдена
}
int main() {
int a, b, m;
cout << "Введите диапазон [a, b]: ";
cin >> a >> b;
cout << "Введите цифру m: ";
cin >> m;
// Проверка корректности интервала
if (!IsCorrect(a, b)) {
cout << "Некорректный интервал." << endl;
return 1;
}
int count = 0;
for (int num = a; num <= b; num++) {
// Проверка, что число нечётное и содержит цифру m
if (num % 2 != 0 && IsPres(num, m)) {
count++;
}
}
cout << "Количество нечётных чисел, содержащих цифру " << m << ": " << count << endl;
return 0;
}
```
---
### Объяснение кода
1. **Проверка интервала**
`IsCorrect` возвращает `true`, если `n1 <= n2`, иначе — `false`.
2. **Проверка содержания цифры**
`IsPres` последовательно извлекает каждую цифру числа `n` и сравнивает с `m`.
Если нашли, возвращаем `true`, иначе — `false`.
3. **Основная часть**
— Вводим диапазон и нужную цифру.
— Проверяем его корректность.
— Перебираем все числа в диапазоне `[a, b]`.
— Для каждого числа проверяем два условия: число нечётное (`num % 2 != 0`) и содержит ли оно цифру `m` (`IsPres`).
— Если оба условия выполняются, увеличиваем счётчик.
4. **Вывод результата**
— После обработки диапазона выводим количество подходящих чисел.
---
Если потребуется более подробное пояснение или объяснение отдельных частей, пожалуйста, скажите!