2012/0040777000113000011500000000000010145345526010776 5ustar prippripeadm2012/Testen.html0100666000113000011500000000750410145345526013131 0ustar prippripeadm EPROG-LU - Aufgabe 2012 (Testen von Loesungen)
2012 Testen Testen von Loesungen
Kategorie:Testen
Klasse:schwer
Eingabe:
Ausgabe:
Abzugebende Files: Testen.txt, Testen.java, Testen.i1, Testen.o1, Testen.i2, Testen.o2, Testen.i3, Testen.o3, Testen.i4, Testen.o4, Testen.i5, Testen.o5 , 9715.txt, 9723.txt, 9771.txt, 9863.txt

Aufgabenbeschreibung:

Sie haben Programme (+ Spezifikationen) von anderen Studenten erhalten. Testen Sie alle Programme auf Korrektheit, Verwendbarkeit und Programmierstil.

Erstellen Sie für jede erhaltene Lösung ein File mit dem Namen <number>.txt. und schreiben in dieses File ein Review (=Kritik) zu der entsprechenden Lösung. Diese Reviews erhalten dann die TeilnehmerInnen von denen die Lösung stammt. Beachten Sie das bitte bei der Form Ihrer Kritik.

Die Dateien <number>.txt müssen; folgenden Aufbau haben:

Korrektheit:    0 - 10
Verwendbarkeit: 0 - 10
Programmierstil:0 - 10

Dokumentation:
(* Hier sollen Ihre Kommentare stehen *)

Finden Sie heraus, welches dieser Programme diese Anforderungen am besten erfüllt und wählen Sie dieses aus.

Merken Sie sich die Lösungsnummer des ausgewählten Beispieles für die Abgabe. Diese Nummer müssen Sie bei der Abgabe angeben.

Kopieren Sie das gewählte Programm auf das File Testen.java um. Führen Sie in diesem File alle notwendigen Modifikationen durch, damit die Klasse korrekt gemäß der dazugehörigen Beispielspezifikation funktioniert.

Ändern Sie die Methode main in die Klassenmethode perform. perform soll einen String zurueckliefern, der die Ausgabe nach der urprünglichen Spezifikation enthält.

Kopf der Methode perform

    public static String perform()

Verwenden Sie zum Testen der Klasse die mitgelieferte Main.java.

IO Paare

Generieren Sie weiters fünf verschiedene IO-Paare. Sie sollen pro Input-Outputpaar zwei Files erzeugen: z.B. Testen.i1 und Testen.o1.

Das File Testen.i1 soll den Inputdatensatz enthalten, wobei das File Testen.o1 den korrespondierenden Outputdatensatz enthalten soll. Diese Ein- und Ausgabedatensätze sollen im wesentlichen den Regeln der Beispielspezifikation folgen, wobei Sie durchaus auch fehlerhafte Eingabedatensätze erzeugen können, mit denen die Fehlerbehandlung des Programms getestet werden kann.

ACHTUNG: Wir testen, ob die von Ihnen gelieferten IO-Paare mit unseren IO-Paaren korrespondieren. Außerdem werden die Files mit jenen anderer Studenten verglichen. Sollten hier Übereinstimmungen festgestellt werden, so werden alle Beteiligten mit 0 Punkten bewertet.

Hinweise

2012/Main.java0100644000113000011500000000124010145345525012512 0ustar prippripeadm//////////////////////////////////////// // !!!! DO NOT CHANGE THIS FILE !!!!! // // !! DIESE DATEI NICHT VERAENDERN !! // //////////////////////////////////////// // Diese Datei dient nur zur // // Vorlage, sie kann nicht abgegeben // // werden und soll unveraendert // // verwendet werden! // //////////////////////////////////////// import eprog.*; public class Main { public static void main (String[] args) { // liefert den String Ausgabe - Rueckgabewert der // Methode Testen.perform String Ausgabe = new String(Testen.perform()); // gibt den String Ausgabe aus EprogIO.println(Ausgabe); } } 2012/9863/0040777000113000011500000000000010145345525011406 5ustar prippripeadm2012/9863/Gerpunkt.java0100644000113000011500000000411110145345525014036 0ustar prippripeadm// Eva Lahnsteiner // MatrNr: 0406150 // Aufgabe 1174, Gerpunkt // Lage eines Punktes zu einer Geraden import eprog.*; import java.lang.*; public class Gerpunkt extends EprogIO{ public static void main (String[] args) { float[] punkte = new float[6]; //Array fr die eingegebenen Koordinaten, 6 Felder, 0-5 float D,D1; //Berechnungsvariablen boolean EprogFehler = false; boolean InhaltFehler = false; int max = 100; // min,max definieren den Wertebereich der Punkte int min = -100; int v1=0; //v1,v2,v3 zum paarweisen Vergleich ntig int v2=0; int v3=0; try{ // Einlesen der Koordinaten und sofortige Prfung auf richtigen Wertebereich for (int i=0; i<=5; i++) { punkte[i]=readFloat(); //Einlesen eines Punktes if ((punkte[i]max)) //Auf Wertebereich prfen InhaltFehler = true; } // Paarweiser Vergleich for (int j=2; j<=3; j++) { if (punkte[j-2]==punkte[j]) v1++; if (punkte[j-2]==punkte[j+2]) v2++; if (punkte[j]==punkte[j+2]) v3++; } if ((v1==2)||(v2==2)||(v3==2)) InhaltFehler=true; } catch (EprogException e) { EprogFehler = true; } //Sind Fehler aufgetreten? if (InhaltFehler) {println("FALSCHE EINGABE");} else { if (EprogFehler) println("?"); else //kein Fehler --> Eingabewerte in Ordnung { //FORMELN: //D = x1*y2 - x2*y1 //D1 = x3*(y2-y1) + y3*(x1-x2) //Berechnung nach den obigen Formeln (x1=punkte[0], y1=punkte[1],...) D=punkte[0]*punkte[3]-punkte[2]*punkte[1]; D1=punkte[4]*(punkte[3]-punkte[1])+ punkte[5]*(punkte[0]-punkte[2]); //Lage des Punktes herausfinden durch Vergleich von D1 und D2, Ausgabe der Lage if (D1 "?" mit Zeilenvorschub ausgeben - Eingabedatensatz ungltiger Wertebereich (z.B. < 100) --> "FALSCHE EINGABE" mit Zeilenvorschub ausgeben - Eingabedatensatz paarweise gleich mit anderem --> "FALSCHE EINGABE" mit Zeilenvorschub ausgeben --> keine weiteren Berechnungen! Programm endet! 5) Realisierung --------------- Variablendefinition ------------------- - Array "punkte" vom Typ "float" mit 6 Feldern steht fr dir einzulesenden Koordinaten zur Verfgung - D1 und D2 sind Variablen in denen die Ergebnisse der Berechnung der Lage des Punktes gespeichert werden - EprogFehler wird auf "true" gesetzt falls ein Datentypsfehler auftritt - InhaltFehler wird auf "true" gesetzt falls z.B. ein Wert < 100 eingegeben wird - min = -100, max = 100 ... Koordinaten mssen in diesem Wertebereich liegen (>=-100, <=100) - v1, v2, v3 dienen als Zhlvariablen und werden beim paarweisen Vergleich der Punkte gebraucht Einlesen der Koordinaten ------------------------ Zum Einlesen der Koordinaten wird eine for-Schleife verwendet. Sie luft 6 mal durch und liest jede x- und y-Koordinate jedes Punktes ein. Jede dieser Koordinaten wird sofort auf den Wertebereich geprft. Falls Wertebereich nicht bereinstimmt: InhaltFehler=true; Nach der Eingabe ist das Array folgendermaen gefllt: punkte [0] [1] [2] [3] [4] [5] ------------------------------- | x1 | y1 | x2 | y2 | x3 | y3 | ------------------------------- Paarweiser Vergleich -------------------- Die Prfung erfolgt wiederum durch eine For-Schleife. Diese luft 2 mal durch (1. Durchlauf j=2, 2.Durchlauf j=3) Beim 1. Durchlauf werden alle x-Koordinaten miteinander verglichen! Sie stehen wie die Darstellung oben zeig an den Positionen 0,2,4. //*********************************************** for (int j=2; j<=3; j++) { if (punkte[j-2]==punkte[j]) v1++; if (punkte[j-2]==punkte[j+2]) v2++; if (punkte[j]==punkte[j+2]) v3++; } if ((v1==2)||(v2==2)||(v3==2)) InputFehler=true; //*********************************************** 1. Durchlauf (Werte eingesetzt) j=2: if (punkte[0]==punkte[2]) v1++; <-- if (x1==x2) v1++; if (punkte[0]==punkte[4]) v2++; <-- if (x1==x3) v2++; if (punkte[2]==punkte[4]) v3++; <-- if (x2==x3) v3++; Somit sind alle x-Kombinationen abgehandelt. Bei einer bereinstimmung 2er x-Koordinaten merkt man sich diesen Zustand in den Variablen v1,v2 oder v3, denn erst wenn die jeweiligen y-Koordinaten der Punkte auch bereinstimmen sind die beiden Punkte gleich! 2. Durchlauf (Werte eingesetzt) j=3: if (punkte[1]==punkte[3]) v1++; <-- if (y1==y2) v1++; if (punkte[1]==punkte[5]) v2++; <-- if (y1==y3) v2++; if (punkte[3]==punkte[5]) v3++; <-- if (y2==y3) v3++; Nach den 2 Schleifendurchlufen wird berprft ob eine der Variablen v1,v2 oder v3 == 2 ist und falls dies der Fall ist, wird InhaltFehler auf true gesetzt, da es nicht erlaubt ist 2 identische Punkte einzugeben. Dh. wre z.B. v1=2 wren die Punkte x1/y1 und x2/y2 identisch! InhaltFehler=true; Berechnung der Lage des Punktes ------------------------------- Wenn die Daten richtig eingegeben wurden erfolgt die Berechnung nach den Formeln: D = x1*y2 - x2*y1 D1 = x3*(y2-y1) + y3*(x1-x2) Fr die jeweiligen Koordinaten (x1,y2 ...) steht im Code das Array mit der jeweiligen Postion der Koordinate. Wenn D1 "LINKS" ausgeben D1=D liegt der Punkt auf der Geraden --> "DARAUF" ausgeben D1>D liegt der Punkt rechts der Geraden --> "RECHTS" ausgeben 2012/9863/117401.gif0100644000113000011500000000414010145345525012622 0ustar prippripeadmGIF89a3f3333f333ff3fffff3f̙3f3f3333f3333333333f333333f3f33f3ff3f3f33333f33̙33333f3333333f333ff3fffff3f3f33ff3f3f3fffff3fffffffffff3ffff̙fff3fffffff3fffff3f3333f333ff3fffff3f̙̙̙3̙f̙̙̙3f3f̙3333f3̙33ff3fff̙ff3f̙̙3f̙3f̙3f3333f333ff3fffff3f̙3f3f, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիX]έ^ÖJV Yъ],kn eKw\o=[ŹKXr^]KV6@˓3E|Ϝ?nxiO\Zk֮c˞M[ͻ NC | CwIcZػ2۞~}={ݻLoWo6>^WQ|3VZ`fD Ba?Yh]Q1i[y[qRVk.R#_xZҌǣ\(8`pCB $=ŘO> $D>f)ӖuvafXjZf xn)ԅr&fI$^XD{ dJѠzM6uWr&bgy2TژЦ.jeIQڣ6+JEZIkF㰸*#G!h>r`ZܖIjzيY 15.P\u.Jo;/w{@TZsg [ OiAg,`!%ur"rN~"7*<빝s;=X|1[3DltR|YGOk-cMuSltCa)*,v}Aъm_/y(z׽4هE3m6ٿJP?X]d9+N~S (tAp*`q4h(r]0e~M"2WFxN[4!ֵQ0%bC㱬|:"V?6Qu\SD(RN0#SȪ&懋]X1af{LpvŚ Cg0v˝J~ @ҟ k@yGj403?F[9AЍȣDJ@=JWZ;2012/9863/Gerpunkt.html0100644000113000011500000001331710145345525014071 0ustar prippripeadm EPROG-LU - Aufgabe 1174 (Lage eines Punktes zu einer Geraden)
1174 Gerpunkt Lage eines Punktes zu einer Geraden
Kategorie:Grafik
Klasse:mittel
Eingabe:Real
Ausgabe:String
Abzugebende Files: Gerpunkt.txt, Gerpunkt.java

Kurzbeschreibung:

Zwei Punkte, die eine Gerade definieren, sowie ein dritter Punkt werden eingelesen; die Lage des Punktes bezüglich der Geraden wird ermittelt und ausgegeben.

Allgemeine Hinweise:

  • Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
  • Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr Programm auch mit anderen Eingabedaten.
  • Verwenden Sie nur das von uns mitgelieferten Package eprog für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns nicht getestet werden und werden mit 0 Punkten bewertet!
  • Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut. Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!

Aufgabenstellung:

Zuerst werden die Koordinaten x1, y1, x2, y2 zweier Punkte eingelesen. Durch diese Punkte soll eine Gerade verlaufen. Weiters werden die Koordinaten x3, y3 eines dritten Punktes eingelesen. Ihr Programm soll nun feststellen, wie dieser Punkt bezüglich der Gerade liegt: links daneben, rechts daneben oder darauf.

Links und rechts daneben beziehen sich nicht auf absolute Koordinaten, sondern auf die Richtung der Geraden. Dazu ist definiert, daß die Gerade in jene Richtung verläuft, sodaß Sie zuerst Punkt 1 und dann Punkt 2 erreicht.

Betrachten wir diese theoretischen Überlegungen an einem Beispiel: Sei unser Eingabedatensatz "0 2 3 -1 5 3".

Auf dem Papier sieht das dann folgendermaßen aus:

Die Gerade läuft von P1 nach P2, hier also von links oben nach rechts unten. Aus dieser Blickrichtung liegt der Punkt P3 links neben der Geraden.

Um die Lage des Punktes zu ermitteln, stellen Sie zuerst die Geradengleichung auf:

X*(y2-y1)+Y*(x1-x2)=D mit D=x1*y2-x2*y1

Dann setzen Sie x3 und y3 in den linken Teil der Gleichung ein und ermitteln so D' =x3*(y2-y1)+y3*(x1-x2).

Der Vergleich von D' mit D liefert die Antwort:

D'<D: Punkt 3 liegt links neben der Geraden
D'=D: Punkt 3 liegt auf der Geraden
D'>D: Punkt 3 liegt rechts neben der Geraden

Eingabedaten:

Lesen Sie die Koordinaten x1, y1, x2, y2, x3, y3 der drei Punkte in dieser Reihenfolge als Zahlen vom Typ Float ein. Alle Koordinaten müssen im Bereich [-100,100] (inklusive) liegen; die drei Punkte müssen paarweise voneinander verschieden sein.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm "LINKS" ausgeben, wenn der Punkt links neben der Geraden liegt, "RECHTS", wenn der Punkt rechts neben der Geraden liegt und "DARAUF", wenn der Punkt auf der Geraden liegt.

Geben Sie am Ende einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
0 0 3 3 2 2

0 2 3 -1 5 3

Ausgabedaten
DARAUF

LINKS


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Gerpunkt < Gerpunkt.i1 > Gerpunkt.out1

Das erzeugte File Gerpunkt.out1 können Sie dann mit dem mitgelieferten Outputfile Gerpunkt.o1 vergleichen. 2012/9723/0040777000113000011500000000000010145345525011401 5ustar prippripeadm2012/9723/Gerpunkt.java0100444000113000011500000000505410145345525014036 0ustar prippripeadm//********************// //Name: Gerpunkt.JAVA // //Author: Weiss Roman // //Matr.Nr.:0326642 // //********************// import eprog.*; public class Gerpunkt { private static float[] points = new float[6]; // Array fr die sechs Werte wird erzeugt public static void main(String[] argv) { int MAX=100; //die Variablen MAX und MIN werden fr die Fehlerbehandling deklariert int MIN=-100; boolean isError = false; //sind die Werte grer oder kleiner 100 (siehe for Schleife) boolean dtError = false; //sind Werte vom Falschen Datentyp (siehe for Schleife) for(int i=0;iMAX || points[i] D) lage = "RECHTS"; return lage; } } 2012/9723/Gerpunkt.txt0100444000113000011500000000306610145345525013735 0ustar prippripeadm***************************************** *Autor: Roman Weiss * *e_mail: e0326642@student.tuwien.ac.at * *Mat.Nr.: 0326642 * *Bsp: 1174 * *Programmname: Gerpunkt.java * * * ***************************************** Programmbeschreibung: Zuerst werden die Koordinaten x1, y1, x2, y2 zweier Punkte eingelesen. Durch diese Punkte soll eine Gerade verlaufen. Weiters werden die Koordinaten x3, y3 eines dritten Punktes eingelesen. Das Programm stellt nun fest, wie dieser Punkt bezglich der Gerade liegen: links daneben, rechts daneben oder darauf. Programm starten: Nachdem sie das Programm gestartet haben geben sie sechs Werte ein.Zwischen den Werten immer die Spacetaste drcken. Sind die Werte eingegeben, mu die Enter Taste gedrckt werden. Enthlt der Eingabedatensatz einen ungltigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben. Sind die Eingaben korrekt, kann das Programm die Lage des dritten Punktes liefern: LINKS RECHTS DARAUF Ansonsten werden die oben genannten Fehlermeldungen geworfen. Ich hoffe das Programm ist verstndlich beschrieben sollten allerdings Fragen dazu auftreten versuche ich si via e-mail zu beantworten. Viel Spass beim Testen Roman Weiss2012/9723/117401.gif0100644000113000011500000000414010145345525012615 0ustar prippripeadmGIF89a3f3333f333ff3fffff3f̙3f3f3333f3333333333f333333f3f33f3ff3f3f33333f33̙33333f3333333f333ff3fffff3f3f33ff3f3f3fffff3fffffffffff3ffff̙fff3fffffff3fffff3f3333f333ff3fffff3f̙̙̙3̙f̙̙̙3f3f̙3333f3̙33ff3fff̙ff3f̙̙3f̙3f̙3f3333f333ff3fffff3f̙3f3f, H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիX]έ^ÖJV Yъ],kn eKw\o=[ŹKXr^]KV6@˓3E|Ϝ?nxiO\Zk֮c˞M[ͻ NC | CwIcZػ2۞~}={ݻLoWo6>^WQ|3VZ`fD Ba?Yh]Q1i[y[qRVk.R#_xZҌǣ\(8`pCB $=ŘO> $D>f)ӖuvafXjZf xn)ԅr&fI$^XD{ dJѠzM6uWr&bgy2TژЦ.jeIQڣ6+JEZIkF㰸*#G!h>r`ZܖIjzيY 15.P\u.Jo;/w{@TZsg [ OiAg,`!%ur"rN~"7*<빝s;=X|1[3DltR|YGOk-cMuSltCa)*,v}Aъm_/y(z׽4هE3m6ٿJP?X]d9+N~S (tAp*`q4h(r]0e~M"2WFxN[4!ֵQ0%bC㱬|:"V?6Qu\SD(RN0#SȪ&懋]X1af{LpvŚ Cg0v˝J~ @ҟ k@yGj403?F[9AЍȣDJ@=JWZ;2012/9723/Gerpunkt.html0100644000113000011500000001331710145345525014064 0ustar prippripeadm EPROG-LU - Aufgabe 1174 (Lage eines Punktes zu einer Geraden)

1174 Gerpunkt Lage eines Punktes zu einer Geraden
Kategorie:Grafik
Klasse:mittel
Eingabe:Real
Ausgabe:String
Abzugebende Files: Gerpunkt.txt, Gerpunkt.java

Kurzbeschreibung:

Zwei Punkte, die eine Gerade definieren, sowie ein dritter Punkt werden eingelesen; die Lage des Punktes bezüglich der Geraden wird ermittelt und ausgegeben.

Allgemeine Hinweise:

  • Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
  • Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr Programm auch mit anderen Eingabedaten.
  • Verwenden Sie nur das von uns mitgelieferten Package eprog für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns nicht getestet werden und werden mit 0 Punkten bewertet!
  • Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut. Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!

Aufgabenstellung:

Zuerst werden die Koordinaten x1, y1, x2, y2 zweier Punkte eingelesen. Durch diese Punkte soll eine Gerade verlaufen. Weiters werden die Koordinaten x3, y3 eines dritten Punktes eingelesen. Ihr Programm soll nun feststellen, wie dieser Punkt bezüglich der Gerade liegt: links daneben, rechts daneben oder darauf.

Links und rechts daneben beziehen sich nicht auf absolute Koordinaten, sondern auf die Richtung der Geraden. Dazu ist definiert, daß die Gerade in jene Richtung verläuft, sodaß Sie zuerst Punkt 1 und dann Punkt 2 erreicht.

Betrachten wir diese theoretischen Überlegungen an einem Beispiel: Sei unser Eingabedatensatz "0 2 3 -1 5 3".

Auf dem Papier sieht das dann folgendermaßen aus:

Die Gerade läuft von P1 nach P2, hier also von links oben nach rechts unten. Aus dieser Blickrichtung liegt der Punkt P3 links neben der Geraden.

Um die Lage des Punktes zu ermitteln, stellen Sie zuerst die Geradengleichung auf:

X*(y2-y1)+Y*(x1-x2)=D mit D=x1*y2-x2*y1

Dann setzen Sie x3 und y3 in den linken Teil der Gleichung ein und ermitteln so D' =x3*(y2-y1)+y3*(x1-x2).

Der Vergleich von D' mit D liefert die Antwort:

D'<D: Punkt 3 liegt links neben der Geraden
D'=D: Punkt 3 liegt auf der Geraden
D'>D: Punkt 3 liegt rechts neben der Geraden

Eingabedaten:

Lesen Sie die Koordinaten x1, y1, x2, y2, x3, y3 der drei Punkte in dieser Reihenfolge als Zahlen vom Typ Float ein. Alle Koordinaten müssen im Bereich [-100,100] (inklusive) liegen; die drei Punkte müssen paarweise voneinander verschieden sein.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm "LINKS" ausgeben, wenn der Punkt links neben der Geraden liegt, "RECHTS", wenn der Punkt rechts neben der Geraden liegt und "DARAUF", wenn der Punkt auf der Geraden liegt.

Geben Sie am Ende einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer vollständig einzulesen. Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
0 0 3 3 2 2

0 2 3 -1 5 3

Ausgabedaten
DARAUF

LINKS


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Gerpunkt < Gerpunkt.i1 > Gerpunkt.out1

Das erzeugte File Gerpunkt.out1 können Sie dann mit dem mitgelieferten Outputfile Gerpunkt.o1 vergleichen. 2012/9715/0040777000113000011500000000000010145345526011403 5ustar prippripeadm2012/9715/Getdate.java0100644000113000011500000000504310145345525013615 0ustar prippripeadm /* Beispiel 1092, Getdate: Datumsberechnung * Irmgard Zeiler, 9840434, 531 */ import java.util.*; import eprog.*; public class Getdate { /* Spezifikationsfehler */ static boolean spezError = false; /* Eingabefehler */ static boolean inputError = false; public static void main(String[] args) { short eingabe=0; /* Anzahl der zu addierenden Tage */ int MIN=1; /* Minimum Eingabe */ int MAX=20000; /* Maximum Eingabe */ int jahr=1970; /* Werte Anfangsdatum */ int monat=1; int tag=1; /* Einlesen des Wertes von "eingabe" */ try { eingabe = EprogIO.readShort(); /* Ausserhalb der Grenzen: Spezifikationsfehler */ if (eingabe < MIN || eingabe > MAX) { spezError = true; } } /* Falscher Datentyp: Eingabefehler */ catch (EprogException e) { inputError = true; } /* Erstellung des Datumsobjekt */ GregorianCalendar cal = new GregorianCalendar(jahr, monat - 1, tag); /* Aufruf der Methode Add; Uebergabe der Eingabe und des Ausgangsdatums */ Add(cal, Calendar.DATE, eingabe); } /* Methode Add: Tage werden zum Ausgangsdatum addiert */ public static void Add(Calendar cal, int feld, int eingabe) { cal.add(feld, eingabe); ShowDate(cal); /* Aufruf der Methode ShowDate */ } /* Methode fuer die Ausgabe des Datums */ public static void ShowDate(Calendar cal) { /* Initialisierung des Ausgabestrings */ String datum_out = ""; if (inputError) { /* bei einem Eingabefehler */ EprogIO.print("?"); /* wird ein Fragezeichen ausgegeben */ } else if (spezError || cal.get(Calendar.YEAR) > 1999) { /* bei einem Spezifikationsfehler */ EprogIO.print("FALSCHE EINGABE"); /* liegt eine falsche Eingabe vor */ } else { if (cal.get(Calendar.DATE)<10) /* fuehrende "0" ist notwendig */ /*Ausgabestring wird um 0 und den Tag erweitert */ { datum_out += "0" + cal.get(Calendar.DATE) + "."; } else /* fuehrende "0" ist nicht notwendig */ { datum_out += cal.get(Calendar.DATE) + "."; } if (cal.get(Calendar.MONTH)<9) /* fuehrende "0" ist notwendig */ { datum_out += "0" + (cal.get(Calendar.MONTH)+1) + "." + cal.get(Calendar.YEAR); } else { datum_out += (cal.get(Calendar.MONTH)+1) + "." + cal.get(Calendar.YEAR); } EprogIO.println(datum_out); /* Ausgabe des Datums */ } } }2012/9715/Getdate.txt0100644000113000011500000000436310145345526013520 0ustar prippripeadmBeispiel 1092, Getdate: Datumsberechnung Dieses Programm liest eine positive Zahl vom Typ SHORT ein, die eine Anzahl von Tagen bezeichnet, die zum 1.1.1970 addiert werden. Eine Eingabe von 364 Tagen liefert beispielsweise den 31.12.1970. Das auf diese Weise entstehende Datum wird ausgegeben. Eingabedaten sind nur dann zulaessig, wenn sie positiv sind und das Jahr 1999 nicht ueberschritten wird. Die Ausgabe erfolgt im Format TT.MM.JJJJ, allfaellige fuehrende Nullen werden also auch ausgegeben. Enthlt der Eingabedatensatz einen ungltigen Datentyp, wird einmal das Zeichen "?" gefolgt von einem Zeilenvorschub ausgegeben. Sind die Datentypen bei der Eingabe richtig, die eingegebenen Daten aber nicht zulaessig, wird "FALSCHE EINGABE" gefolgt von einem Zeilenvorschub ausgeben. Die Eingabe der Daten erfolgt mittels des Packages eprog innerhalb einer try-catch Anweisung. Bei der Ausfuehrung der im try Block enthaltenen Anweisungen, naemlich beim Einlesen einer Zahl des Typs Short, kann es zu einem Fehler kommen. In diesem Fall (zum Beispiel bei der Eigabe eines falschen Datentyps) wird die Programmausfuehrung unterbrochen und mit der ersten Anweisung nach der catch Klausel fortgefahren (der globale boolean "inputError" wird true gesetzt). Sofern kein "Ausnahmetyp" auftritt, wird innerhalb des try Blocks die Zulaessigkeit der Eingabe ueberprueft: ueber- bzw. unterschreitet der Wert eine bestimmte Schwelle (MIN, MAX) wird der globale boolean "spezError" true gesetzt. Im naechsten Schritt wird unter der Verwendung der Utility Klassen (java.util.*) ein Datumsobjekt aus der Klasse GregorianCalendar erzeugt und mit dem 1.1.1970 initialisiert. Zu beachten ist, dass die Monate von null weggezaehlt werden. Anschliessend wird die Methode Add aufgerufen. Hier wird zu einem beliebigen Feld des GregorianCalendar-Objekts mittels ".add" ein beliebiger positiver oder negativer Wert hinzugezhlt. Man uebergibt dabei das Ausgangsdatum ("cal"), das Feld ("Calendar.DATE", also der Tag) und die Anzahl der Tage, die addiert werden sollen ("eingabe"). Innerhalb von Add wird ShowDate aufgerufen, die das Datum im gewuenschten Format ausgibt. Mit Hilfe von "get" wird auf einzelne Felder des Datums zugegriffen ( cal.get(Calendar.YEAR) liefert z.B. das Jahr von "cal"). 2012/9715/Getdate.html0100644000113000011500000001035110145345526013637 0ustar prippripeadm EPROG-LU - Aufgabe 1092 (Datumberechnung)

1092 Getdate Datumberechnung
Kategorie:Datum
Klasse:mittel
Eingabe:Short
Ausgabe:siehe Spez
Abzugebende Files: Getdate.txt, Getdate.java

Kurzbeschreibung:

Eine angegebene Anzahl von Tagen soll zum 1.1.1970 addiert werden und das so entstehende Datum ausgegeben werden.

Allgemeine Hinweise:

  • Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
  • Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr Programm auch mit anderen Eingabedaten.
  • Verwenden Sie nur das von uns mitgelieferten Package eprog für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns nicht getestet werden und werden mit 0 Punkten bewertet!
  • Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut. Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!

Aufgabenstellung:

Lesen Sie eine positive Zahl vom Typ SHORT ein. Diese bezeichnet eine Anzahl von Tagen, die zum 1.1.1970 addiert werden sollen. Eine Addition von 364 Tagen liefert beispielsweise den 31.12.1970.

Das auf diese Weise entstehende Datum soll ausgegeben werden.
Vergessen Sie gegebenenfalls nicht zu überprüfen, ob das Jahr ein Schaltjahr ist.

Eingabedaten:

Die Eingabedaten sind positive Zahlen vom Typ SHORT und nur dann zulässig, wenn sie als Ergebnis ein Jahr<2000 erzeugen.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm das berechnete Datum im Format TT.MM.JJJJ ausgeben, wobei Tag und Monat zweistellig, gegebenenfalls also mit führenden Nullen, ausgegeben werden sollen.

Geben Sie nach dem Datum einen Zeilenvorschub aus.

Fehlerbehandlung:

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
12.3

27000

5

Ausgabedaten
?

FALSCHE EINGABE

06.01.1970


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Getdate < Getdate.i1 > Getdate.out1

Das erzeugte File Getdate.out1 können Sie dann mit dem mitgelieferten Outputfile Getdate.o1 vergleichen. 2012/9771/0040777000113000011500000000000010145345526011405 5ustar prippripeadm2012/9771/Getdate.java0100644000113000011500000000466110145345526013625 0ustar prippripeadm /*////////////////////////////////// Engin MUTLU 0127099 535 Aufgabe:Getdate.java //////////////////////////////////*/ import eprog.*; public class Getdate extends EprogIO { /** Creates a new instance of Getdate */ public Getdate() { } /** * @param args the command line arguments */ public static void main(String[] args) throws EprogException { // TODO code application logic here boolean error=false; int MM=1; int TT =1; int JJJJ=1970; int Months[]={31,28,31,30,31,30,31,31,30,31,30,31}; int Years []={1972,1976,1980,1984,1988,1992,1996}; short eingabe; try { eingabe = readShort(); int year = (short)eingabe/364; JJJJ=JJJJ+year; int day = (short)eingabe%365; int month=0; ///////////////////////////////////////////////////////// for(int x=0 ;x<7 ;x++ ){ if( JJJJ==Years[x]){ day = day+x+1; } } ///////////////////////////////////////////////////////// for(int i=0 ;i<12 ;i++ ){ if(day > Months[i] ){ day=day-Months[i]; }else if(day < Months[i]){ month=i; TT=TT+day; break; } } MM=MM+month; }catch(EprogException e){ System.out.println("?"); System.exit(0); } if(JJJJ>2000 ){ error=true; } if(error ){ System.out.println("FALSCHE EINGABE"); System.exit(0); } if (TT<10 && MM<10){ System.out.println("0"+TT+"."+"0"+MM+"."+JJJJ); }else if(MM<10 ){ System.out.println(TT+"."+"0"+MM+"."+JJJJ); }else if(TT<10 ){ System.out.println("0"+TT+"."+MM+"."+JJJJ); }else System.out.println(TT+"."+MM+"."+JJJJ); } } 2012/9771/Getdate.txt0100600000113000011500000000306010145345526013503 0ustar prippripeadm/*////////////////////////////////// Engin MUTLU 0127099 535 Aufgabe:Getdate.java //////////////////////////////////*/ ______________________________ Kurzbeschreibung: Eine angegebene Anzahl von Tagen soll zum 1.1.1970 addiert werden und das so entstehende Datum ausgegeben werden. ______________________________ Aufgabenstellung: Lesen Sie eine positive Zahl vom Typ SHORT ein. Diese bezeichnet eine Anzahl von Tagen, die zum 1.1.1970 addiert werden sollen. Eine Addition von 364 Tagen liefert beispielsweise den 31.12.1970. Das auf diese Weise entstehende Datum soll ausgegeben werden. Vergessen Sie gegebenenfalls nicht zu überprüfen, ob das Jahr ein Schaltjahr ist. ______________________________ Eingabedaten: Die Eingabedaten sind positive Zahlen vom Typ SHORT und nur dann zulässig, wenn sie als Ergebnis ein Jahr<2000 erzeugen. ______________________________ Ausgabedaten: Bei korrekten Eingabedaten soll Ihr Programm das berechnete Datum im Format TT.MM.JJJJ ausgeben, wobei Tag und Monat zweistellig, gegebenenfalls also mit führenden Nullen, ausgegeben werden sollen. Geben Sie nach dem Datum einen Zeilenvorschub aus. ______________________________ Fehlerbehandlung: Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden. Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben. 2012/9771/Getdate.html0100644000113000011500000001035110145345526013641 0ustar prippripeadm EPROG-LU - Aufgabe 1092 (Datumberechnung)

1092 Getdate Datumberechnung
Kategorie:Datum
Klasse:mittel
Eingabe:Short
Ausgabe:siehe Spez
Abzugebende Files: Getdate.txt, Getdate.java

Kurzbeschreibung:

Eine angegebene Anzahl von Tagen soll zum 1.1.1970 addiert werden und das so entstehende Datum ausgegeben werden.

Allgemeine Hinweise:

  • Ihr Programm darf nur genau jene Ausgabedaten liefern, die in der Spezifikation verlangt werden. Die Ausgaben Ihres Programmes werden automatisch mit Referenzdaten verglichen; etwaige Abweichungen führen zu Punkteabzügen!
  • Testen Sie Ihr Programm vor der Abgabe mit der mitgelieferten Eingabedatei. Geben Sie Ihre Lösung erst ab, wenn die Ausgaben Ihres Programmes mit der ebenfalls mitgelieferten Ausgabedatei übereinstimmen! Testen Sie Ihr Programm auch mit anderen Eingabedaten.
  • Verwenden Sie nur das von uns mitgelieferten Package eprog für Ihre Ein/Ausgaben. Programme, die Packages oder Klassen ausserhalb der verwendeten Übungsumgebung (Java2, Standard Edition, Version 1.5.0) verwenden, können von uns nicht getestet werden und werden mit 0 Punkten bewertet!
  • Schreiben Sie Ihr Programm möglichst allgemein und kommentieren Sie es gut. Erstellen Sie weiters eine übersichtliche und verständliche Dokumentation. Damit erhöhen Sie Ihre Chancen, daß andere Studenten in den nächsten Runden Ihr Programm wählen und Ihnen damit zu Zusatzpunkten verhelfen!

Aufgabenstellung:

Lesen Sie eine positive Zahl vom Typ SHORT ein. Diese bezeichnet eine Anzahl von Tagen, die zum 1.1.1970 addiert werden sollen. Eine Addition von 364 Tagen liefert beispielsweise den 31.12.1970.

Das auf diese Weise entstehende Datum soll ausgegeben werden.
Vergessen Sie gegebenenfalls nicht zu überprüfen, ob das Jahr ein Schaltjahr ist.

Eingabedaten:

Die Eingabedaten sind positive Zahlen vom Typ SHORT und nur dann zulässig, wenn sie als Ergebnis ein Jahr<2000 erzeugen.

Ausgabedaten:

Bei korrekten Eingabedaten soll Ihr Programm das berechnete Datum im Format TT.MM.JJJJ ausgeben, wobei Tag und Monat zweistellig, gegebenenfalls also mit führenden Nullen, ausgegeben werden sollen.

Geben Sie nach dem Datum einen Zeilenvorschub aus.

Fehlerbehandlung:

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Sind die Datentypen bei allen Eingaben richtig, die eingegebenen Daten aber inhaltlich nicht korrekt oder erfüllen nicht die Bedingungen, so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
12.3

27000

5

Ausgabedaten
?

FALSCHE EINGABE

06.01.1970


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Getdate < Getdate.i1 > Getdate.out1

Das erzeugte File Getdate.out1 können Sie dann mit dem mitgelieferten Outputfile Getdate.o1 vergleichen.

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif