Чтобы я достиг итерационного решения в C++
Я пишу код в следующей функции (detectHappy), которая будет проверять, является ли число счастливым числом или нет, только для 10 циклов (итераций). Моя функция должна :
- Найдите сумму цифр числа.
- Проверьте результат, полученный в пункте 1. Если это 1, присвойте значение 1 переменной 'finalNumber', иначе снова выполните пункт 1, пока полученное число не станет 1 или пока число циклов не увеличится до 10.
- Присвойте значение итерации переменной 'cycle_no'.
Я не должен вводить, выводить или объявлять какие-либо дополнительные функции. Мне просто нужно написать тело уже объявленной там функции, которая заставит ее работать на оболочке, предложенной в моем курсе...
Программа, которую я пытался написать, компилируется, но не дает правильных результатов (например, число 6 генерирует значение 32765 после 10 циклов вместо ожидаемых 145. Сейчас мне не хватает идей, и я буду благодарен за любую помощь. Заранее спасибо.
Что я уже пробовал:
/*Question : Write your code to find whether the number is a happy number or not (for max 10 cycles). int number : The number to be determined whether it is happy or not int finalNumber : Store the resultant value in this variable int cycle_no : Store the number of iterations done to determine whether the 'number' is happy or not */ void detectHappy(int number, int &finalNumber, int &cycle_no) { //Write your solution code below this line int sum = 0; int i = 1; do{ sum += (number%10)*(number % 10); number /=10; if (sum == 1){ finalNumber = 1; break; } else { number = sum; ++number; } cycle_no = ++i; } while (i < 10); }