Конечно! Ниже я подробно объясню, как реализовать каждую из требуемых функций и как решить поставленную задачу.
Общая постановка задачи
Нам нужно:
- Проверить, является ли интервал [a, b] корректным.
- Для каждого числа в интервале определить его последнюю цифру.
- Посчитать, сколько чисел в интервале имеют последнюю цифру, совпадающую с заданной цифрой.
1. Реализация функции bool IsCorrect(int n1, int n2)
Этот метод проверяет, корректен ли интервал [n1, n2]. Логика в том, что интервал считается корректным, если n1 ≤ n2.
bool IsCorrect(int n1, int n2) {
return n1 <= n2;
}
Объяснение:
Если начальная граница меньше или равна конечной — интервал допустим. Иначе — некорректен.
2. Реализация функции int NumToDigit(int n)
Эта функция по входному числу возвращает его последнюю цифру. Для этого достаточно взять остаток от деления числа на 10:
int NumToDigit(int n) {
return abs(n) % 10; // берём абсолютное значение, чтобы обеспечить правильность для отрицательных чисел
}
Объяснение:
- Если число отрицательное, оставить его абсолютное значение, чтобы получить правильную последнюю цифру.
- Остаток от деления на 10 даёт последнюю цифру числа.
3. Решение основной задачи
Дано число a, b, и пользовательская цифра digit. Нужно пройтись по всем числам в интервале [a, b], определить их последнюю цифру и подсчитать количество совпадений.
Общий подход:
- Проверить, что интервал корректен.
- Итеративно пройти по всему интервалу.
- Для каждого числа определить последнюю цифру.
- Если она совпадает с пользовательской цифрой, увеличить счетчик.
Полный пример кода программы на C++
#include <iostream>
#include <cstdlib> // для функции abs
using namespace std;
// Проверка корректности интервала
bool IsCorrect(int n1, int n2) {
return n1 <= n2;
}
// Получение последней цифры числа
int NumToDigit(int n) {
return abs(n) % 10;
}
int main() {
int a, b, digit;
// Ввод интервала и цифры
cout << "Введите интервал [a, b]: ";
cin >> a >> b;
cout << "Введите цифру для сравнения (0-9): ";
cin >> digit;
// Проверка корректности интервала
if (!IsCorrect(a, b)) {
cout << "Некорректный интервал." << endl;
return 1;
}
int count = 0; // счетчик подходящих чисел
for (int num = a; num <= b; ++num) {
if (NumToDigit(num) == digit) {
++count;
}
}
cout << "Количество чисел на интервале, у которых последняя цифра совпадает с " << digit << ": " << count << endl;
return 0;
}
Итог
- Мы написали функцию
IsCorrect, которая проверяет правильность интервала.
- Мы реализовали функцию
NumToDigit, которая возвращает последнюю цифру числа.
- В главной функции программа просит пользователя ввести интервал и цифру, затем подсчитывает и выводит количество чисел, удовлетворяющих условию.
Если нужно — могу помочь адаптировать код под конкретные условия или расширить функциональность.