Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, kann mir jemand bei dieser schwierigen Aufgabe bitte behilfich sein?

Ich nenne sie euch mal kurz

Enwickle Schritt für Schritt - zunächst ohne eine Prozedur, dann mit immer mehr Prozeduren und schließlich mit dem Instrument der for-Schleife - ein einziges Programm, nach dem der Hamster sich um zwei gleichschenklige Dreiecke wie in den Varianten 1 und 2 ( folgen später ) hintereinander im Uhrzeigersinn bewegt, abschließend bis zur unteren rechten Ecke läuft und in Blickrichtung nach unten bleibt.

Der Hamster startet immer in der gleichen Position oben links mit Blickrichtung nach unten. Zwischen dem hamster und den Steinen darf beim Umrunden kein freies Feld sein. Es darf keinen Crash mit den Steinen oder der Bande geben...

Das Territorium ist 12 x 12 Felder groß. Der Hammster "kennt" folgende Regel für die Dreiecke: es sind zwei Dreiecke, das eine ist in der oberen linken Ecke, das andere ist in der unteren rechten Ecke, die Größe kann variieren. Von keinem Dreieck liegt ein Stein in der gleichen Zeile oder in der gleichen Reihe.

1. Versteh ich die Aufgabe nicht genau wie der Hamster nun laufen soll...

2. Hab ich auch nicht wirklich die große ahnung wie man mit einer IF Schleife den Hamster durch dieses ganze territorium laufne lassen soll ohne das der irgendwo nicht hinkommt...

Variante 1

variante1n46n.jpg

Variante 2

variante2w075.jpg

Variante 3

variante3f7ha.jpg

Variante 4

variante457ep.jpg

Bitte um Hilfe

MfG LordWalter :baby:

Geschrieben
Hallo, kann mir jemand bei dieser schwierigen Aufgabe bitte behilfich sein?

Inwiefern behilflich, dass jemand Deine Hausaufgaben macht? Das Board ist nicht dafür gedacht, dass jemand anderes Deine Arbeit macht! Du solltest Eigeninitiative zeigen, damit für jeden sichtbar ist, dass Du Dir selbst Gedanken um Dein Problem machst

1. Versteh ich die Aufgabe nicht genau wie der Hamster nun laufen soll...

Es ist immer hilfreich zu beschreiben, was Du nicht verstehst. Die Aufgabe besteht darin die Figur um die Dreiecke laufen zu lassen, ohne dass dabei "Fehler" auftreten.

2. Hab ich auch nicht wirklich die große ahnung wie man mit einer IF Schleife den Hamster durch dieses ganze territorium laufne lassen soll ohne das der irgendwo nicht hinkommt...

Es gibt keine IF-Schleife, vielleicht setzt Du Dich zunächst mit den Grundbegriffen zunächst auseinander. Wenn ich mir das Problem so anschaue, dann würde ich sagen, dass man mit einer Schleife und einer If Bedingung das Problem lösen kann

Eine elegante Möglichkeit das Problem zu lösen:

Tiefensuche ? Wikipedia

Breitensuche ? Wikipedia

Phil

Geschrieben

joar danke erstmal für die Tipps

also ich habe mit schon Gedanekn drum gemacht und habe ganze 8 oder 9 komplette programme geschrieben und ich bin immer dran hängen geblieben wie ich nach dem ersten lauf der Reihe mich umdrehe und die nächste REihe ablaufe ... dann muss er sich ja andersrum drehen als zuvor

kann man eine If Bedingung in else reinschreiben??

weil irgendwie check ich das nicht so richtig ^^

mfg Lordwalter

Geschrieben
dann muss er sich ja andersrum drehen als zuvor

kann man eine If Bedingung in else reinschreiben??

weil irgendwie check ich das nicht so richtig ^^

Du kannst beliebig tief schachteln. Aber evtl zeigst Du einmal die Codes

Phil

Geschrieben

void main() {

for (int i=4; i<16; i++) alles();

}

void laufe() {

while (vornFrei()) {

vor();

}

}

void rechtsUm() {

linksUm();

linksUm();

linksUm();

}

void alles() {

laufe();

rechtsUm();

vor();

rechtsUm();

laufe();

linksUm();

vor();

linksUm();

}

void wegAussen() {

laufe();

rechtsUm();

vor();

rechtsUm();

laufe();

linksUm();

vor();

linksUm();

laufe();

rechtsUm();

vor();

rechtsUm();

laufe();

linksUm();

vor();

linksUm();

laufe();

}

ich dachte ja an sowas... aber kann man nicht diese ablaufe mit dem abtasten noch anders ausführen sodass der das automatisch macht?^^

ich könnte es nur so.

Wir müssen das so hinkriegen, dass der Hamster in jedem dieser Territorien um die Rechtecke rumläuft und dann weiter die Reihen abfährt, ohne das ein Crash zustande kommt...

Also muss es ja wie hier vorgegeben eine For-Schleife geben die das damit darstellt.

Geschrieben

Das ist kein funktionierender und auch syntaktisch korrekter Quellcode. Bitte benutze auch die Codetags des Forums, damit man Deinen Code lesen kann.

Meiner Ansicht nach hast Du Dir keine großen Gedanken dazu gemacht, denn es fehlt schon eine Datenstruktur, die das Gitter implementiert. Zusätzlich sind Deine Methoden leer, d.h. es ist nur ein Rumpf ohne Inhalt. Du hast nur irgendwie etwas aneinander kopiert ohne darüber nach zu denken. Ich gehe zusätzlich davon aus, dass Du entsprechendes Grundlagenwissen hast, so dass Du den "Hamster" über jedes Feld laufen lassen kannst. Das wäre auch der erste Schritt. Du musst ein funktionsfähiges Programm entwerfen, in dem die Spielfigur über alle Felder läuft

Phil

Geschrieben

hmm lass ich mir mal durch den Kopf gehen... Der hat uns das so beigebracht mit dem rankopieren. das ding das unser Lehrer ne ordentliche Pfeife ist und das selber nicht so kann der hat da halt seine Zettelchen und Lösungszettelchen aber der kann uns das nicht richtig beibringen ... naja eigtl haben alle aus unserem Kurs 0 Plan von Java Hamster ^^ und dann stellt er uns da so ne Aufgabe die wir ohne richtige vorbereitung eigtl garnicht lösen könnten

hehe naja ich probier es einfach mal weiter!

danke für die schnellen antworten

mfg lordi

Geschrieben

Ich hab das nochmal überarbeitet und hab jetzt soetwas rausbekommen ... damit funktioniert es einigermaßen ^^


void main() {

for (int i=1; i<=12 ;i++) schritt();

for (int i=1; i<=10 ;i++) umDieEcke();

for (int i=1; i<=6 ; i++) umDasRechtEck();

rechtsUm();

for (int i=1; i<=3 ;i++) rum();

testAndersUm();

for (int i=1; i<=9 ;i++) schritt();

for (int i=1; i<=12 ;i++) ablauf();

for (int i=1; i<=12 ;i++) schritt();

for (int i=1; i<=12 ;i++) ablauf();

for (int i=1; i<=12 ;i++) schritt();

for (int i=1; i<=12 ;i++) ablauf();


}

void rum() {

if (vornFrei())

vor();

else {

testAndersUm();

}

}

void umDasRechtEck() {

if (!vornFrei())

rechtsUm();

else {

vor();

}

}

void schritt() {

	if (vornFrei()) 

	vor();

	else {

	test();

	}

	}

	void umDieEcke() {


    if (vornFrei()) 

    vor();

    else {

    testUm();

    }

}

void rechtsUm() {

linksUm();

linksUm();

linksUm();

}

void kehrt() {

linksUm();

linksUm();

}

void test() {

linksUm();

vor();

linksUm();

}


void testUm() {

linksUm();

vor();

rechtsUm();

}

void testAndersUm() {

rechtsUm();

vor();

linksUm();

}

void megaDrehung() {

rechtsUm();

vor();

rechtsUm();

}

void ablauf() {

if (vornFrei())

vor();

else {

megaDrehung();

}

}


Geschrieben
Ich hab das nochmal überarbeitet und hab jetzt soetwas rausbekommen ... damit funktioniert es einigermaßen ^^

Das sieht schon besser aus. Evtl würde, wenn der Hamster das kann, das ganze rekursiv anbieten. D.h. Du versuchst immer einen Schritt zu gehen, wenn, wenn es nicht geht, dann drehst Du den Hamster und versuchst es noch einmal

Phil

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...