Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Написать программу, позволяющую определить, равна ли сумма двух первых цифр заданного числа четырехзначного числа сумме двух его последних цифр.

Решение задачи: «Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр»

textual
Листинг программы
#include <stdio.h>
 
void digits(unsigned number, int dig[]) {
    if (number) {
        *dig = number % 10;
        digits(number / 10, dig + 1);
    }
}
 
int func(unsigned number) {
    int dig[10] = { 0 };
    digits(number, dig);
    return (dig[0] + dig[1]) == (dig[2] + dig[3]);
}
 
int main() {
    unsigned number;
 
    printf("number: ");
    if (scanf("%u", &number) == 1) {
        printf("%s\n", func(number) ? "yes" : "no");
    }
 
    return 0;
}

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

В этом коде:

  1. В функции digits происходит обход числа (переменная number) с помощью алгоритма стека. На каждом шаге алгоритма, функция digits** делит число на 10 и сохраняет последнюю цифру в массиве dig. Затем рекурсивно вызывает себя для оставшейся части числа (которая при делении на 10 становится единицей). На последнем шаге, когда число становится равным 0, функция заканчивает свою работу.
  2. В функции func создается массив dig**, инициализируемый нулями. Затем вызывается функция digits, которая заполняет этот массив цифрами числа. После этого функция проверяет условие, и если оно выполняется, возвращает 1, иначе 0.
  3. В функции main программа запрашивает у пользователя ввод числа и сохраняет его в переменной number. Затем вызывается функция func, и результат ее работы выводится на экран.

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

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