Определить имеются ли в заданных числах одинаковые цифры, и сколько - 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;
}

Объяснение кода листинга программы

  1. Включаем заголовочный файл stdio.h для использования функций ввода-вывода.
  2. Определяем две константы : MAX_VALUE (максимальное значение чисел для проверки на равенство цифр) и BUF_SIZE (размер буфера для хранения чисел).
  3. Функция HasEqual принимает два указателя на строки (константные указатели) и проверяет есть ли в них одинаковые символы.
  4. В функции main считываем два числа с помощью функции scanf в переменные x и y.
  5. Если числа в пределах допустимого диапазона (меньше MAX_VALUE), то продолжаем, иначе выходим из цикла.
  6. Функцией sprintf преобразуем числа в строки и сохраняем их в буферы buf1 и buf2.
  7. Вызываем функцию HasEqual с буферами в качестве аргументов.
  8. Выводим результат на экран с помощью функции printf.
  9. Если число введено некорректно (например, буква), то программа выдаст ошибку и запросит повторный ввод.
  10. Если числа не содержат одинаковых цифр, то программа выведет False.
  11. Если числа содержат одинаковые цифры, то программа выведет True.
  12. После вывода результата программа снова запрашивает два числа до тех пор, пока не будет введено некорректное значение или не будет достигнуто максимальное значение чисел.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы