Определить имеются ли в заданных числах одинаковые цифры, и сколько - C (СИ)
Формулировка задачи:
Ввести два числа, каждое < 6500. Определить имеются ли в них одинаковые цифры и сколько. Предусмотреть повторение программы.Спасибо.
Решение задачи: «Определить имеются ли в заданных числах одинаковые цифры, и сколько»
textual
Листинг программы
#include <stdio.h>
#define MAX_VALUE 6500
#define BUF_SIZE 5
int HasEqual(const char *s1, const char *s2)
{
const char *p1, *p2;
for (p1 = s1; *p1; ++p1)
for (p2 = s2; *p2; ++p2)
if (*p1 == *p2)
return 1;
return 0;
}
int main(void)
{
int x, y;
char buf1[BUF_SIZE], buf2[BUF_SIZE];
do
{
printf("Enter two digits, (< %d for exit)\nx=", MAX_VALUE);
scanf("%d", &x);
printf("y=");
scanf("%d", &y);
if (x < MAX_VALUE && y < MAX_VALUE)
{
sprintf(buf1, "%d", x);
sprintf(buf2, "%d", y);
printf(HasEqual(buf1, buf2) ? "True\n" : "False\n");
}
} while (x < MAX_VALUE && y < MAX_VALUE);
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода.
- Определяем две константы : MAX_VALUE (максимальное значение чисел для проверки на равенство цифр) и BUF_SIZE (размер буфера для хранения чисел).
- Функция HasEqual принимает два указателя на строки (константные указатели) и проверяет есть ли в них одинаковые символы.
- В функции main считываем два числа с помощью функции scanf в переменные x и y.
- Если числа в пределах допустимого диапазона (меньше MAX_VALUE), то продолжаем, иначе выходим из цикла.
- Функцией sprintf преобразуем числа в строки и сохраняем их в буферы buf1 и buf2.
- Вызываем функцию HasEqual с буферами в качестве аргументов.
- Выводим результат на экран с помощью функции printf.
- Если число введено некорректно (например, буква), то программа выдаст ошибку и запросит повторный ввод.
- Если числа не содержат одинаковых цифр, то программа выведет False.
- Если числа содержат одинаковые цифры, то программа выведет True.
- После вывода результата программа снова запрашивает два числа до тех пор, пока не будет введено некорректное значение или не будет достигнуто максимальное значение чисел.