Ich habe eine Aufgabe, um den Körper der folgenden Funktion (detectHappy) ausfüllen, die nur für 10 Zyklen (Iterationen) überprüft, ob eine Zahl eine glückliche Zahl ist oder nicht. Ich muss:Iterative Lösungen mit C++
-Finden Sie die Summe der Ziffern der Zahl.
- Überprüfen Sie das in Punkt 1 erhaltene Ergebnis. Wenn es 1 ist, weisen Sie der Variablen 'finalNumber' den Wert 1 zu, andernfalls führen Sie Punkt 1 aus, bis die Zahl 1 erreicht oder die Anzahl der Zyklen auf 10 erhöht wird.
- Weisen Sie den Iterationswert der Variablen 'cycle_no' zu.
Ich sollte keine zusätzlichen Funktionen eingeben, ausgeben oder deklarieren. Ich muss nur den Körper der Funktion schreiben, die bereits dort erklärt wird, die es auf dem in meinem Kurs angebotenen Shell arbeiten lässt ...
Das Programm habe ich versucht, kompiliert zu schreiben, aber gibt nicht die richtigen Ergebnisse. Mir fehlen jetzt die Ideen und ich werde für jede Hilfe dankbar sein. Vielen Dank im Voraus.
Code:
/*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 = 0;
do{
sum += (number%10)*(number%10);
number /=10;
if (sum == 1){
finalNumber = 1;
break;
}
else {
number = sum;
i++;
}
cycle_no = i;
}
while (i < 10);
}
Von einem Charles zum anderen, werden wir Ihre Hausaufgaben für Sie auf Stack-Überlauf nicht! – Charles
hmmm während (10) huh? – RSon1234
'while (10)' ist falsch. Es ist effektiv eine Endlosschleife, da der numerische Wert "10" in der while-Klausel immer als wahr ausgewertet wird. Zum Glück hast du dort eine Pause. Wenn Sie jedoch 10 Wiederholungen durchführen möchten, ist das nicht der richtige Weg. Ich würde hier keine do while-Schleife verwenden, nur eine normale for-Schleife. 'für (int i = 0; i <10; i ++)', das bedeutet auch, dass Ihre 'i'-Variable nur für die for-Schleife gilt. –