Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3158970
А
Аноним
30 апреля 2025 12:23 · публичный вопрос
А
Аноним

Описать функцию bool IsCorrect(int n1, int n2) для определения, является ли введенный пользователем интервал корректным. Описать функцию bool IsPres(int n, int m) для определения,…

Запрос пользователя

Описать функцию bool IsCorrect(int n1, int n2) для определения, является ли введенный пользователем интервал корректным. Описать функцию bool IsPres(int n, int m) для определения, содержит ли число n цифру m. Решить задачу: определить количество нечетных чисел, содержащих введенную пользователем цифру, на интервале [а, b] с использованием разработанных функций. Язык С++. Консоль. Windows

Ответ нейросети
30 апреля 2025 12:23

Конечно! Ниже приведено подробное решение задачи на языке 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.


Код решения

#include <iostream>
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. Вывод результата
    — После обработки диапазона выводим количество подходящих чисел.


Если потребуется более подробное пояснение или объяснение отдельных частей, пожалуйста, скажите!