lordwalter Geschrieben 24. Mai 2009 Teilen Geschrieben 24. Mai 2009 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 Variante 2 Variante 3 Variante 4 Bitte um Hilfe MfG LordWalter :baby: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Mai 2009 Teilen Geschrieben 24. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordwalter Geschrieben 24. Mai 2009 Autor Teilen Geschrieben 24. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 24. Mai 2009 Teilen Geschrieben 24. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordwalter Geschrieben 25. Mai 2009 Autor Teilen Geschrieben 25. Mai 2009 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 25. Mai 2009 Teilen Geschrieben 25. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordwalter Geschrieben 25. Mai 2009 Autor Teilen Geschrieben 25. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lordwalter Geschrieben 25. Mai 2009 Autor Teilen Geschrieben 25. Mai 2009 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(); } } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 26. Mai 2009 Teilen Geschrieben 26. Mai 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.