C# :: Aufgabe #361 :: Lösung #1
5 Lösungen

#361
Fröhliche Zahlen (Happy Number)
Fortgeschrittener - C#
von JKooP
- 28.02.2021 um 10:24 Uhr
Von einer fröhlichen Zahl spricht man, wenn eine natürliche Ausgangszahl (Integer)
nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat.
Die Iterationsvorschrift hier:
Die Summe der Quadrate aller Ziffern einer Zahl.
Wiederholen des Prozesses mit der neu entstandenen Zahl, bis am Ende
das Ergebnis entweder 1 (true) ist oder die Schleife unendlich weiterläuft (false).
Beispiel Glückliche Zahl:
Zahl 19
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
Beispiel unendlich:
Zahl 2
2² = 4
4² = 16
1² + 6² = 37
3² + 7² = 58
5² + 8² = 89
8² + 9² = 145
...
Aufgabe 1 (mittel):
Erstelle eine Methode/Funktion, die als Ergebnis bei einer Glücklichen Zahl den Wert true
und ansonsten false zurückgibt. Dabei können mehrere Schleifen ineinander verschachtelt werden.
Aufgabe 2 (schwieriger):
Wie Aufgabe 1, aber mit nur einer Schleife.
Viel Spaß
nach einer bestimmten Iterationsvorschrift am Ende den Zielwert 1 hat.
Die Iterationsvorschrift hier:
Die Summe der Quadrate aller Ziffern einer Zahl.
Wiederholen des Prozesses mit der neu entstandenen Zahl, bis am Ende
das Ergebnis entweder 1 (true) ist oder die Schleife unendlich weiterläuft (false).
Beispiel Glückliche Zahl:
Zahl 19
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1
Beispiel unendlich:
Zahl 2
2² = 4
4² = 16
1² + 6² = 37
3² + 7² = 58
5² + 8² = 89
8² + 9² = 145
...
Aufgabe 1 (mittel):
Erstelle eine Methode/Funktion, die als Ergebnis bei einer Glücklichen Zahl den Wert true
und ansonsten false zurückgibt. Dabei können mehrere Schleifen ineinander verschachtelt werden.
Aufgabe 2 (schwieriger):
Wie Aufgabe 1, aber mit nur einer Schleife.
Viel Spaß
#1

von Nerv28 (80 Punkte)
- 09.03.2021 um 11:04 Uhr

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Fröhliche_Zahlen { class Program { static void Main(string[] args) { int iEingabe = 0; bool bTemp = false; while (bTemp == false) { Console.WriteLine("Bitte geben Sie eine Zahl ein."); if (!int.TryParse(Console.ReadLine(), out iEingabe)) { Console.Clear(); Console.WriteLine("Bitte geben Sie nur Zahlen ein!"); } else { bTemp = true; } } if (Fröhliche_Zahl(iEingabe) == true) { Console.WriteLine($"{iEingabe} ist eine Fröhliche Zahl!"); } else { Console.WriteLine($"{iEingabe} ist keine Fröhliche Zahl."); } Console.ReadLine(); } public static bool Fröhliche_Zahl(int iEingabe) { int iZähler = 0; double dTemp = 0, dErgebnis = 0; string sEingabe = ""; sEingabe = iEingabe.ToString(); while (dErgebnis != 1 && iZähler < 1000) { if (iZähler >= 50 && dErgebnis == 4) { break; } dErgebnis = 0; foreach (char c in sEingabe) { dTemp = int.Parse(c.ToString()); dErgebnis += Math.Pow(dTemp, 2); } Console.WriteLine(dErgebnis); sEingabe = dErgebnis.ToString(); iZähler++; } if (iZähler >= 1000 || dErgebnis == 4) { return false; } else { return true; } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1