View Full Version : [Runde 3] - Spezifikation 3048
glubschi
28-12-2004, 14:47
Hallo,
programmier grad das bsp 3048 aus und stoße auf einige unklarheiten bezüglich der spezifikation. und da ja die uni geschlossen ist und ich hier in tirol sitze, hoffe ich, dass mir die fragen vielleicht hier auf dem forum wer beantworten kann...
hier mal die Spezifikation
Kategorie:Grafik Klasse:mittel Eingabe:siehe Spezifikation Ausgabe:siehe Spezifikation Abzugebende Files: Clippen.txt, Clippen.java, *.java , 10261.txt, 10482.txt
Sie haben Lösungen (und Spezifikationen) aus der 1. Runde von anderen Studenten erhalten, die Ihnen Ihre Aufgabe erleichtern sollen. Wählen Sie eine Lösung aus, die Ihnen hinsichtlich Lesbarkeit, Programmierstil, Korrektheit und Verwendbarkeit am besten erscheint. Verwenden Sie diese Lösung in Ihrem Programm. Sie können auch die anderen Lösungen einsetzen.
Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben. Geben Sie nur jene Lösungsnummer an, die Sie auch wirklich ausgewählt haben.
Erstellen Sie für alle Lösungen zu diesem Beispiel (siehe: "Abzugebende Files") ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der Lösung. Diese Reviews erhalten dann die TeilnehmerIn von dem/der die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.
Meine fragen:
Abzugebende files: *.java - was bedeutet das? was muss ich da bitte abgeben?? oder gilt das nur, wenn ich mehrere klassen schreibe außer clippen.java???
muss ich das programm des anderen, das ich gewählt habe, 1:1 einbinden oder kann ich da teile daraus entnehmen und umschreiben usw?
muss ich mein programm in mehreren fassungen abgeben, sprich: eines mit dem einen bsp-programm der ersten runde, eines mit dem zweiten bsp-programm der ersten runde,..??
Was ist ein Exit-Code bzw. wann tritt er auf - ich weiß - da gibts schon mehrere threads, die ich mir jetzt auch anschauen werd, aber ich wäre doch dankbar wenns mir wer ganz kurz zusammenfassen könnte..
Ok - ich denke, das wars mal daweil..
Danke schon im voraus 1000x!!!!
lg glubschi
Paulchen
28-12-2004, 14:55
Abzugebende files: *.java - was bedeutet das? was muss ich da bitte abgeben?? oder gilt das nur, wenn ich mehrere klassen schreibe außer clippen.java???
du kannst dein ganzes programm in clippen.java unterbringen; du kannst dich angesichts der im verhältnis zur ersten runde höheren komplexität des programms aber auch dazu entscheiden, dein programm auf mehrere klassen aufzuteilen
muss ich das programm des anderen, das ich gewählt habe, 1:1 einbinden oder kann ich da teile daraus entnehmen und umschreiben usw?vorgesehen ist, dass du einen teil des programms, das du bekommen hast, verwendest, ggf. anpasst usw.
ich hab aber auch gehört, dass es möglich sein soll, ein komplett neues programm zu schreiben, ohne code der gelieferten lösungen zu verwenden, und trotzdem alle punkte zu erhalten; ob das stimmt, weiß ich nicht
muss ich mein programm in mehreren fassungen abgeben, sprich: eines mit dem einen bsp-programm der ersten runde, eines mit dem zweiten bsp-programm der ersten runde,..??
quatsch - ein programm, mehr nicht
Was ist ein Exit-Code bzw. wann tritt er auf - ich weiß - da gibts schon mehrere threads, die ich mir jetzt auch anschauen werd, aber ich wäre doch dankbar wenns mir wer ganz kurz zusammenfassen könnte..ist für eprog irrelevant, solange du die methode main nur mit return verlässt und nicht mit System.exit().
ich hab aber auch gehört, dass es möglich sein soll, ein komplett neues programm zu schreiben, ohne code der gelieferten lösungen zu verwenden, und trotzdem alle punkte zu erhalten; ob das stimmt, weiß ich nicht stimmt im grunde nicht, weil du zwar alle punkte durch die automatische bewertung erhalten wirst, jedoch beim kontrollgespräch auf den teil, den du wiederverwendet hast eingehen sollst -> wenns keine gibt -> keine punkte!
Was ist ein Exit-Code bzw. wann tritt er auf - ich weiß - da gibts schon mehrere threads, die ich mir jetzt auch anschauen werd, aber ich wäre doch dankbar wenns mir wer ganz kurz zusammenfassen könnte.. Ein Exit-Code ist ein Befehl der das Programm beendet, wenn er aufgerufen wird.
Beispiel:
public class ExitCode{
public static void main(String[] args) {
boolean error = true;
if (error) {
System.out.println("FALSCHE EINGABE");
System.exit(0); }
else
//.....irgendwas
}
} Das Programm bricht immer ab, wenn System.exit(0) aufgerufen wird.
Paulchen
28-12-2004, 15:20
Ein Exit-Code ist ein Befehl der das Programm beendet, wenn er aufgerufen wird.ist der exit code nicht das argument von System.exit()?
weil sonst wäre ja das hier irgendwie schwer verständlich:
Falls Ihr Programm ein Exit Code zurueckliefert, so achten Sie darauf, dass dieser den Wert 0 hat. Bei allen anderen Werten koennen Probleme bei der Bewertung und in weiterer Folge unbeabsichtigte Punkteabzuege auftreten.
soll heißen, wenn System.exit() im programm vorkommt, dann nur System.exit(0) und nicht mit irgendeinem anderen argument als 0
ok sorry klar, hast schon recht, mir ist es aber eher darum gegangen zu beschreiben, was die Exit-Codes (oder System.exit() -Befehle) eigentlich machen, denn das war doch die frage
Was mir trotzdem nicht klar ist, ist die Bedeutung vom Exit Code (oder halt dem Argument bei System.exit()). - Okey, wir dürfen nur 0 reinschreiben, weil was anderes bei der automatischen Bewertung nicht richtig funktioniert; aber was sagt diese Null aus? bzw. was wär anders, wenn ich was andres rein schreib? (- nicht bei eprog, sondern im Normalfall. )
thx
Paulchen
28-12-2004, 16:14
für dein programm, welches einen exitcode zurückliefert, ändert sich (im normalfall, nicht bei eprog) nichts, wenn du statt 0 eine 1 oder sonst irgendwas schreibst. dieser wert wird an das betriebssystem übergeben und kann von einem anderen programm abgefragt werden.
dazu ein kurzes beispiel:
public class test {
public static void main(String[] args) {
.
.
.
if(error)
System.exit(1);
else
System.exit(0);
}
.
.
.
}
tritt in diesem programm ein fehler auf, so soll der exit code 1 sein, ansonsten 0. was kann man jetzt damit machen?
als computeranwender, der in früheren jahren noch viel mit dem heute in die "schwarze konsole" verdrängten DOS zu tun hatte, könnte ich eine Stapelverarbeitungsdatei wie die folgende schreiben:
@echo off
.
.
.
java test
if errorlevel 1 echo Es ist ein Fehler bei der Ausführung des JAVA-Programms aufgetreten.
.
.
.
wird diese stapelverarbeitungsdatei ausgeführt, so startet diese das java-programm test; liefert dies den exit-code 1 zurück; mit "if errorlevel 1" wird dann abgefragt, ob das programm einen exit-code >=1 zurückgeliefert hat; wenn ja, muss irgendein fehler aufgetreten sein, eine entsprechende meldung wird ausgegeben.
das geht natürlich nicht nur mit dem exit code 1, zulässig ist ein exit-code bis 127, 128, 255, 256 (da will ich mich nicht festlegen...); mit entsprechendem code kann eine solche stapelverarbeitungsdatei auf verschiedene vom java-programm gemeldete fehler reagieren und entsprechende, wie auch immer geartete maßnahmen einleiten.
(hoffe, das ist halbwegs verständlich...)
stimmt im grunde nicht, weil du zwar alle punkte durch die automatische bewertung erhalten wirst, jedoch beim kontrollgespräch auf den teil, den du wiederverwendet hast eingehen sollst -> wenns keine gibt -> keine punkte!
was??..das find ich ja ganz toll wenn hier im forum gepostet wird dass mans nícht verwenden muss und mir das auch von 2 tutoren bestätigt wird
und ich dann im kontrollgespräch 0 punkte bekomme weil ichs nicht verwendet hab...
woher weißt du das?
abgesehen mal davon kann ich ja auch sagen: das programm hat mich auf eine idee gebracht oder sonst irgendwas
..es steht nirgends WIE man das programm verwenden soll...
lg lionne!
ich habs selber von einem tutor, weil bei mir der fall so lag, dass die beiden programme, die ich bekommen habe, wirklich absolut nicht gut, korrekt, etc. waren, ich mich mit den denkansätzen, vorgängen und dem programmierstil der autoren absolut nicht identifizieren konnte. darauf hab ich einen tutor gefragt (keine ahnung wen!) ob ich denn den code verwenden MUSS, er hat gesagt, mindestens 1 zeile. ok das hab ich dann auch gemacht, und zwar "EprogIO.println("FALSCHE EINGABE");" also wirklich auch nicht gerade spektakulär. aber rausreden kann man sich da schon...irgendwie zumindest :verycool:
Venefica
29-12-2004, 17:54
hallo
ich habe echt ein problem mit diesem beispiel. ich habe jetzt einmal geschafft dass er alle zahlen einliest und dann überprüft ob diese richtig sind. aber ich komm nicht damit klar, wie ich den rest machen soll. wie find ich heraus ob ein dreieck in oder außer dem rechteck liegt? Vielleicht kann mir jemand einen denkanstoss geben?
hier die spezi http://eprog.sourceforge.net/eprog/3048/Clippen.html
Paulchen
29-12-2004, 21:07
wieviel zahlt man mir für eine idee? :devil:
gibt es mindestens eine strecke, welche einen eckpunkt des dreiecks mit dem nächsten verbindet, die geschnitten mit einer strecke, welche einen eckpunkt des fensters mit dem nächsten verbindet, einen schnittpunkt liefert, so liegt das dreieck teilweise innerhalb und teilweise außerhalb des fensters.
gibt es keine solchen schnittpunkte, so liegt das dreieck entweder komplett innerhalb des fensters, das dreieck umschließt das fenster oder das dreieck liegt komplett außerhalb des fensters. liegen alle punkte des dreiecks innerhalb des fensters, so liegt das dreieck komplett innerhalb des fensters.
liegen alle punkte des fensters innerhalb des dreiecks, so umschließt das dreieck das fenster.
liegt keiner dieser drei fälle vor, liegt das dreieck komplett außerhalb des dreiecks.
wichtigste frage: wie stelle ich nun fest, ob ein punkt innerhalb des dreiecks/des fensters liegt?
ich stelle alle gleichungen der trägergeraden der strecken, welche das objekt begrenzen, in der form y=kx+d auf.
nun mache ich halbebenen daraus, indem ich = durch < oder > ersetze. welches dieser beiden zeichen ich nehme, entscheidet sich dadurch, dass die für die gerade nicht verwendeten punkte innerhalb dieser halbebene liegen müssen und daher deren koordinaten die bedingung y<kx+d bzw. y>kx+d erfüllen müssen.
nun überprüfe ich, ob ein punkt in allen diesen halbebenen liegt, d. h. ob seine koordinaten die gleichungen aller halbebenen erfüllt. ist dies so, dann liegt der punkt innerhalb des objektes.
diese schritte kann man für jeden punkt des dreiecks/fensters durchführen und dadurch feststellen, ob dieses objekt vollständig im jeweils anderen objekt liegt. die fälle 2 und 3 sind dadurch abgedeckt.
Paulchen
30-12-2004, 14:17
das, was da oben steht, ist eine hardcore-variante für allgemeine fenster, für diesen fall zwar anwendbar, aber ein wenig umständlich in der umsetzung; hier liegt aber ein spezieller fall vor, und zwar dass das fenster die eckpunkte mit den koordinaten (0,0), (0, c), (d, c) und (d, 0) hat.
da kann man wie folgt vorgehen:
es gibt schnittpunkte von dreiecksseiten und fensterseiten, d. h. das dreieck liegt teilweise innerhalb und teilweise außerhalb des fensters.
alle koordinaten des dreiecks befinden sich innerhalb des fensters; dann liegt das dreieck komplett innerhalb des fensters
wenn fall 1 und fall 2 nicht zutreffen: liegen zwei eckpunkte des dreiecks in einem quadranten und der dritte eckpunkt im diagonal gegenüberliegenden quadranten, dann schließt das dreieck das fenster ein.
wenn fall 1 und fall 2 nicht zutreffen: alle drei eckpunkte des dreiecks liegen in verschiedenen quadranten; dann muss sich das dreieck über alle quadranten (d. h. auch über den quadranten, in welchem sich kein eckpunkt befindet) erstrecken, damit das dreieck das fenster einschließt.
wenn die fälle 1 bis 4 nicht zutreffen: das dreieck muss komplett außerhalb des fensters liegen
ich hoffe, ich hab nichts vergessen; im übrigen würde ich mich auf diese auflistung nicht allzusehr verlassen, da ich nicht weiß, ob das tatsächlich alle fälle sind, die eintreten können.
glubschi
31-12-2004, 12:13
ich hätt da nochne frage...
hat irgendwer eine ahnung wie wir den fall behandeln sollen, wenn eine seite des dreiecks genau auf der fensterseite liegt??
somit hätte man ja unendlich viele schnittpunkte...
Venefica
31-12-2004, 19:08
ich hätt da nochne frage...
hat irgendwer eine ahnung wie wir den fall behandeln sollen, wenn eine seite des dreiecks genau auf der fensterseite liegt??
somit hätte man ja unendlich viele schnittpunkte...
kannst du ja mit k & d dann überprüfen ob die seite vom Rechteck gleich der Seite vom Dreieck ist.
falls es das dann ist, überprüfen ob die 3. koordinate im dreieck ist oder nicht. . .
hallo!
was heiss das k & d
dankeschön
Paulchen
17-05-2005, 22:15
hallo!
was heiss das k & d
dankeschön
geradengleichung: y=kx+d
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.