Hallo meine Lieben
Ihr kennt vielleicht folgendes Zahlenrätsel:
Du hast 9 Kugeln, eine ist minimal schwerer. Mit einer Balkenwage sollst du die schwerere finden. Wiege so selten wie möglich, wie oft muss man mindestens wiegen um mit Sicherheit die schwerere Kugel zu finden.
Ich kenn die Lösung und spoiler hier einfach mal, dass immer gilt:
3Wie oft ich wiegen muss = Kugelanzahl
In diesem Fall: 32=9 (9 Kugeln -> 2 mal wiegen)
Ich habe versucht das ganze in n Windows-Form zu setzen:
TextBox1 zur Eingabe der Kugeln
TextBox2 zu Ausgabe der Anzahl an Wiegevorgängen
Button1 zur Berechnung
Und folgenden Code für den Button:
for (int x = 0; x <= 100; x++)
{
int y = 3 ^ x;
int z = 3 ^ (x + 1);
if ((Convert.ToInt32(textBox1.Text) >= y) & (Convert.ToInt32(textBox1.Text) <= z))
{
textBox2.Text = Convert.ToString(x+1);
}
}
Besagt, so wars zumindest geplant, dass die schleife die exponenten von 30 bis 3100 berechnet und immer vergleicht ob die eingegebene Zahl Kugeln zwischen 3x und 3x+1 liegt. Tut sie das, so soll das Programm in TextBox2 x+1 ausgeben
Leider kommen komplett seltsame Ergebnisse zustande.
Könnt ihr mir helfen und mir sagen warum bitte?
Liebe Grüße und danke
Bladz
Der ^-operator bedeutet nicht, dass die potenz genommen wird. Das ist ein binäres XOR. Richtig ist: Math.Pow(basis, exponent);
tadaa 😄 da hätt ich aber echt selbst drauf kommen müssen xD dankeschön^^
Ach und falls es irgendeinen interessiert (was ich nicht glaube, aber könnte ja sein 😄)
Hier die Endfassung, noch mit leichten Änderungen
for (int x = 0; x <= 100; x++)
{
double y = Math.Pow(3, x);
double z = Math.Pow(3, (x + 1));
if ((Convert.ToDouble(textBox1.Text) > y) & (Convert.ToDouble(textBox1.Text) <= z))
{
textBox2.Text = Convert.ToString(x+1);
}
if (Convert.ToDouble(textBox1.Text) == y)
{
textBox2.Text = Convert.ToString(x);
}
if (Convert.ToDouble(textBox1.Text) == z)
{
textBox2.Text = Convert.ToString(x + 1);
}
}
Danke nochmal vielmals 😄
Hallo Bladz,
als Anmerkung zum Code: verwende lieber double.TryParse und double.ToString für die Konvertierungen.
Beachte bitte vorsorglich auch [Hinweis] Wie poste ich richtig? Punkt 1.1, 1.1.1
mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.
"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"