Определение минимального счастливого числа в одномерном массиве - 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;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
для использования функций ввода-вывода. - Функция countDigits(int num) возвращает количество цифр в числе num.
- Используем цикл do-while для деления числа на 10 и увеличения счётчика до тех пор, пока число больше нуля.
- Функция isHappyDigit(int num, int numLen) определяет счастливое это число или нет.
- Используем цикл for для проверки каждой цифры числа.
- Если количество цифр чётное, то проверяем, является ли число счастливым.
- Если число счастливое и min равно 0 или число меньше min, то min присваивается текущему числу.
- Если min всё ещё равно 0 после проверки всех чисел, выводим сообщение
Счастливое число не найдено. - В противном случае выводим сообщение
Минимальное счастливое число — min.