Определение минимального счастливого числа в одномерном массиве - C (СИ)

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

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

Дан одномерный массив. Определить минимальное счастливое число среди чисел с четным количеством цифр. Счастливое число - это число, у которого сумма цифр первой половины числа равна сумме второй половины.

Решение задачи: «Определение минимального счастливого числа в одномерном массиве»

textual
Листинг программы
#include <stdio.h>
 
int countDigits(int num)            //функция возвращает количество цифр в числе
{ 
    int cnt;
 
    do
    {
        num = num / 10;
        cnt++;
    }
    while (num > 0)
 
    return cnt;
}
 
bool isHappyDigit(int num, int numLen)    //функция определяет счастливое это число или нет
{
    int     j, n1, n2;
 
    for (j=0; j<numLen; j++)
    {
        if (j >= numLen/2)
            n1 += num % 10;
        else
            n2 += num % 10;
 
        num = num / 10;
    }
      
    return n1==n2;
}
 
int main()
{
    int arrLen      = 9;
    int a[arrLen]   = {2332, 12, 123321, 567, 12345, 6667, 567890, 44455770, 99};
    int min         = 0;
    int i, len;
 
    for (i=0; i<arrLen; i++)
    {
        len = countDigits(a[i]);
 
        if (len % 2 == 0)        //если четное количество цифр
        {
            if (isHappyDigit(a[i], len))
            {
                if  (min==0 || a[i]<min)
                    min = a[i];
            }
        }
    }
    if (min == 0)
        printf ("Счастливое число не найдено");
    else
        printf ("Минимальное счастливое число - %d", min);    //результат 99
 
    return 0;
}

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

  1. Включаем заголовочный файл для использования функций ввода-вывода.
  2. Функция countDigits(int num) возвращает количество цифр в числе num.
  3. Используем цикл do-while для деления числа на 10 и увеличения счётчика до тех пор, пока число больше нуля.
  4. Функция isHappyDigit(int num, int numLen) определяет счастливое это число или нет.
  5. Используем цикл for для проверки каждой цифры числа.
  6. Если количество цифр чётное, то проверяем, является ли число счастливым.
  7. Если число счастливое и min равно 0 или число меньше min, то min присваивается текущему числу.
  8. Если min всё ещё равно 0 после проверки всех чисел, выводим сообщение Счастливое число не найдено.
  9. В противном случае выводим сообщение Минимальное счастливое число — min.

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

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