C# :: Aufgabe #361 :: Lösung #2
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ß
#2

von Waldgeist (2310 Punkte)
- 12.03.2021 um 18:43 Uhr
Hallo,
also ich schaffe es nur mit 2 Schleifen.
Hier der XAML Code für die Oberfläche
C#-Code
und hier der Code für die Logik:
C#-Code
grüße
Waldgeist
also ich schaffe es nur mit 2 Schleifen.
Hier der XAML Code für die Oberfläche

<Window x:Class="_361_Happy_Numbers.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:_361_Happy_Numbers" mc:Ignorable="d" Title="Happy Numbers / Fröhliche Zahlen" Height="300" Width="650"> <Grid> <Label Content="Dieses Programm ermittelt ob ihre eingegebene Zahl eine fröhliche Zahl ist !!" HorizontalAlignment="Center" Height="48" Margin="0,22,0,0" VerticalAlignment="Top" Width="800" HorizontalContentAlignment="Center" FontWeight="Bold" FontSize="16" /> <TextBox x:Name="tb_eingabe" HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Height="40" Margin="0,70,0,0" Text="1" TextWrapping="Wrap" VerticalAlignment="Top" Width="75" /> <Button x:Name="button_prüfen" Content="prüfen" HorizontalAlignment="Center" Height="40" VerticalAlignment="Top" Width="75" Click="button_prüfen_Click" Margin="0,140,0,0" /> </Grid> </Window>
und hier der Code für die Logik:

using System; using System.Windows; namespace _361_Happy_Numbers { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button_prüfen_Click(object sender, RoutedEventArgs e) { string zahlstring = tb_eingabe.Text; int laenge = zahlstring.Length; double wert = 0; int abruch = 0; do { abruch++; wert = Rechnen(zahlstring); zahlstring = wert.ToString(); } while (wert != 1 & abruch < 100); if (wert == 1) { MessageBox.Show("Die Zahl ist GLÜCKLICH !"); } else { MessageBox.Show("Leider ist die Zahl nicht glücklich"); } } private double Rechnen(string Daten) { double wert = 0; foreach (var stelle in Daten) { double zahl = stelle - 48; wert += Math.Pow(zahl, 2); } return wert; } } }
grüße
Waldgeist
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1