Java Der vergessliche König (Aufgabe zu geschachtelten Zählschleifen)

Status
Für weitere Antworten geschlossen.

Goodplayer

Lt. Junior Grade
🎅Rätsel-Elite ’24
Registriert
Juli 2005
Beiträge
505
Hallo!
Ich sitze gerade seit einigen Stunden an einer Aufgabe und komme nicht wirklich weiter. Hier erst einmal der Aufgabentext:

Das Königreich eines alten vergesslichen Königs erstreckt sich über einige Kilometer entlang eines Flusses (die Länge des Königreiches ist eine ganze Zahl) und ist an jeder Stelle 31 km breit und weniger lang, als der König alt ist. Desweiteren hat der König einige Erben und er ist älter als die Anzahl dieser Erben, aber noch nicht 111. Der vergessliche König erinnert sich nur daran, dass das Produkt aus der Quadratkilometerzahl seines Königreiches, seines Alters und der Anzahl seiner Erben gleich dem Wert seines Schatzes ist. Der Wert seines Schatzes ist 1184603 Goldstücke. Wie alt ist der König, wieviele Erben hat er und wie lang ist sein Königreich?

Man soll nun in Java ein Programm erstellen, "welches mittels ineinander verschachtelter for-Schleifen alle Möglichkeiten unter Beachtung der obigen Einschränkungen durchprobiert".


Ich bin nun schon den ganzen Nachmittag am überlegen und probieren, wie man dies mit for-Schleifen lösen könnte. Man hat ja folgende Bedingungen/Gleichungen:

b = 31 km (b ist die Breite)
l < x (l ist die Länge und x ist das Alter des Königs)
e < x < 111 (e ist die Anzahl der Erben)
(b * l) * x * e = 1184603

Bei der letzten Gleichung kann man dann schließlich noch durch 31 teilen, da b ja bekannt ist:

l * x * e = 38213


(Als Alter soll 103 Jahre herauskommen [zumindest habe ich das von anderen Leuten gehört], für die Länge ergibt sich dann 53 km und die Anzahl der Erben ist 7 [könnte man theoretisch auch anders herum nehmen].)

Ich weiß nun aber überhaupt nicht, welche Anfangswerte und Bedingungen ich für die for-Schleifen nehmen soll. Und wenn ich die Werte um 1 erhöhen lasse, dann komme ich doch nie auf die 7 und die 53 (denke ich zumindest, wahrscheinlich wird man irgendwo ein break einbauen müssen).

Ich hoffe, jemand kann mir hier helfen und Tipps geben, nach gerade einmal 1 1/2 Monaten Java an der Uni scheint diese Aufgabe doch noch recht schwer (und auch im Vergleich zu den vorangegangen Aufgaben) :).
 
effizienz ist jetzt mal egal:
PHP:
    // b = 31 km (b ist die Breite)
        // l < x (l ist die Länge und x ist das Alter des Königs)
        // e < x < 111 (e ist die Anzahl der Erben
        // l * x * e = 38213

        for (int l = 1; l < 111; l++){
            for (int e = 1; e< 111; e++){
                for (int x = 1; x < 111; x++)
                    if (l*x*e == (1184603 / 31)) System.out.println("l " + l + " e " + e + " x " +x );
            }
        }

run:
l 7 e 53 x 103
l 7 e 103 x 53
l 53 e 7 x 103
l 53 e 103 x 7
l 103 e 7 x 53
l 103 e 53 x 7
 
Grausam... wenn ich das lese bin ich in dem Entschluss bestärkt daß es richtig war, mein Informatikstudium damals abzubrechen ^^
 
klingt eher nach einem Rätsel aus dem PM-Magazin oder der "Bild der Wissenschaft"! Mir ist in meiner Unilaufbahn sowas nicht untergekommen.
 
Goodplayer schrieb:
wenn ich die Werte um 1 erhöhen lasse, dann komme ich doch nie auf die 7 und die 53
Doch, deswegen ja die verschachtelten Schleifen.

Deine erste Schleife zählt von 1 bis Y. Innerhalb dieser Schleife zählt die nächste Schleife von 1 bis Z.

Die erste Schleife startet bei 1, dann kommt die zweite Schleife, die von 1 bis Z läuft. Erst dann kommt die erste Schleife wieder an die Reihe, mit 2, und die zweite Schleife läuft wieder von 1 bis Z. Damit deckst du alle Kombinationsmöglichkeiten der Schleifen ab.

In deinem Beispiel hast du halt mehr als 2 Schleifen, siehe CoolHandLukes Code.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben